Для нового розробника в системі було б досить складно здогадатися, що було правдою. Перше, що ви зробите, - навести курсор на ім’я методу або перейти до визначення (жодне з яких не є великими завданнями).
Так, правда. Самодокументування коду - прекрасна річ. Як вказували інші відповіді, існують способи усунути неоднозначність виклику ReturnEmployeeIds
за допомогою enum, різних назв методів тощо. Однак іноді справді не вдається уникнути справи, але ви не хочете виходити з ладу та використовувати їх скрізь (якщо вам не подобається багатослівність візуального основного).
Наприклад, це може допомогти уточнити один дзвінок, але не обов'язково інший.
Тут може бути корисний названий аргумент:
var ids = ReturnEmployeeIds(includeManagement: true);
Не додайте додаткової ясності (я думаю, що це розбір перерахунку):
Enum.Parse(typeof(StringComparison), "Ordinal", ignoreCase: true);
Це може насправді знизити ясність (якщо людина не розуміє, що є у списку):
var employeeIds = new List<int>(capacity: 24);
Або де це не має значення, оскільки ви використовуєте хороші імена змінних:
bool includeManagement = true;
var ids = ReturnEmployeeIds(includeManagement);
Чи є де-небудь, що офіційно обговорює, чи слід чітко вказати необов'язкові параметри, коли компілятору вам не потрібно?
Не AFAIK. Давайте ж розглянемо обидві частини: єдиний час, коли вам потрібно явно використовувати названі параметри, це тому, що компілятор вимагає від вас цього (як правило, це видалити неоднозначність оператора). Тож крім цього, ви можете їх використовувати коли завгодно. У цій статті від MS є кілька пропозицій щодо того, коли ви, можливо, захочете їх використовувати, але це не особливо остаточно https://msdn.microsoft.com/en-us/library/dd264739.aspx .
Особисто я вважаю, що я їх використовую найчастіше, коли я створюю власні атрибути або закладаю новий метод, коли мої параметри можуть змінюватися або упорядковуватися (b / c названі атрибути можуть бути перелічені в будь-якому порядку). Крім того, я використовую їх лише тоді, коли надаю статичне значення в рядку, інакше, якщо я передаю змінну, я намагаюся використовувати хороші імена змінних.
TL; DR
Зрештою, це зводиться до особистих переваг. Звичайно, є кілька випадків використання, коли вам доведеться використовувати названі параметри, але після цього вам потрібно зробити виклик судження. IMO - використовуйте його в будь-якому місці, на який, на вашу думку, це допоможе задокументувати ваш код, зменшити неоднозначність або дозволить захистити підписи методів.
boolean
аргументи методу, і як?