Названня методу "зробити X, якщо потрібно"


23

Який хороший спосіб назвати метод, який перевіряє, чи потрібно робити X, і чи робить це X у разі потреби?

Наприклад, як назвати метод, який оновлює список користувачів, якщо нові користувачі увійшли? UpdateListIfNeededздається занадто довгим, тоді як простий UpdateListозначає можливу дорогу і непотрібну операцію щоразу робиться. EnsureListUpdatedє також варіантом.

C # має bool TryXXX(args, out result)шаблон (наприклад int.TryParse(str, out num)) , щоб перевірити , якщо X є можливо і зробити це, але це трохи відрізняється.


1
Тільки рекомендаційна точка, такі методи, хоча вони мають намір, слід створювати обережно. По дорозі вони, як правило, потрапляють у незв'язаний код під виглядом "про всяк випадок" або "додавання виклику до нього в X () виправили помилку, але я не знаю, чому". Якщо ви маєте дисципліну дзвонити лише RefreshUserList()під час LoginUser()та LogoutUser(), а не під час, скажіть GetUser()(там, де список уже оновлюється), то, безумовно, стосується наведеної нижче поради.
Кевін МакКормік

Відповіді:


25

Я схильний використовувати Ensure. Це несе в собі сенс переконатися, що щось подбає, однак це потрібно зробити. Якщо це вже добре, просто перевірте це і ми закінчили. Інакше зробіть це. У будь-якому випадку, просто переконайтеся, що це зроблено .


13

Мої уподобання такі UpdateList. Якщо нічого не потрібно робити, так і буде. Витрати завжди повинні бути зведені до мінімуму, тому, якщо ви UpdateListробите більше, ніж потрібно, то в його здійсненні щось неправильно.

В основному, це дієслово, яке говорить вам, що слід робити методу. CalculateXзавжди повинен перерахувати X. GetYзавжди повинен повертати Y, але виконувати лише роботу, якщо це необхідно. Так само UpdateZпросить оновити Z, якщо зробити це найбільш ефективним способом.


2

Може, подзвони мені"

Кооптований із фрагментів Haskell я бачив, спробуйте

UpdateListMaybe();

2
Я гадаю, якби я зрозумів Haskell краще, це може мати більше сенсу. Висновок: Якщо це використовується мовою, відмінною від Haskell, це зрозуміють лише ті, хто знає Haskell.
Роберт Харві

2
Через шість років я інший програміст, з трохи більшими знаннями про речі Haskell. Я більше не схвалюю цю відповідь, ха-ха. Я здогадуюсь, що моя ідея в той час полягала в тому, щоб використовувати слово "можливо", щоб позначити, що функція обробляє якусь необов'язковість. Я все ще іноді роблю це (наприклад, Варіант [A] => B називається можливоToB)
Марк Канлас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.