Основы C#

Теория: Детерминированность

Независимо от того, какой язык программирования используется, методы внутри него обладают некоторыми фундаментальными свойствами. Зная эти свойства, легче прогнозировать поведение методов, способы их тестирования и место их использования. К таким свойствам относится детерминированность. Метод называется детерминированным тогда, когда для одних и тех же входных аргументов он возвращает один и тот же результат. Например, метод, находящий номер символа в строке, детерминированный

"wow".IndexOf('o'); // 1
"wow".IndexOf('o'); // 1

Сколько бы раз мы не вызывали этот метод, передавая туда символ 'o', он всегда вернет значение 1. В свою очередь метод, возвращающий случайное число или, например, текущее время, не является детерминированным, так как у одного и того же входа (даже если он пустой, то есть аргументы не принимаются) мы получим всегда разный результат. Насколько он разный - не важно, даже если хотя бы один из миллиона вызовов вернет что-то другое, этот метод автоматически считается недетерминированным.

// Метод, возвращающий случайное рациональное число
Functions.RandomDouble(); // 0.9421500302020687
Functions.RandomDouble(); // 0.5468204760759785

Зачем это нужно знать? Детерминированность серьезно влияет на многие аспекты. Детерминированные функции удобны в работе, их легко оптимизировать, легко тестировать. Если есть возможность сделать функцию детерминированной, то лучше ее такой и сделать

Рекомендуемые программы

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845