У моїй команді ми тісно співпрацюємо з кількома архітекторами програмного забезпечення. Вони затверджують всі дизайнерські рішення наших проектів, роблять деякі огляди коду тощо.
Наші проекти в основному складаються з функцій бекенда, реалізованих у PHP, використовуючи рамку Symfony 2. Таким чином, синтаксично код, конвенції іменування та структура проекту виглядають майже ідентично тому, як виглядатиме Java (Symfony 2 заохочує таку структуру). Я згадую про це, оскільки специфічні для Java умови застосовуються і в нашому випадку (якщо можливо).
Нещодавно вони запропонували щось, що мені здається дуже дивним: усі методи повинні мати сполучники у своєму імені, наприклад getEntityOrNull
, setValueOrException
тощо.
Така конвенція щодо іменування мені дуже помиляється, але я не можу придумати жодних конкретних аргументів чи онлайн-статей / сторінок, які б конкретно оскаржували це.
Єдине, що я придумав:
- така інформація повинна бути присутня в анотаціях методу, як
@return
або@throws
- використання сполучників ("і", "або" тощо) у назвах методів зазвичай говорить про те, що Принцип єдиної відповідальності належним чином не дотримується
Які ще є конкретні аргументи проти цієї конвенції про іменування?
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
Це не стосується наведених вами прикладів, де сполучник використовується для уточнення механізму, що використовується для обробки несправностей, а не для вказівки, що це може зробити те чи інше. Навіть найбільш вузько визначена функція може мати законні умови відмови, наприклад, вискакування порожнього стека.
Int32.TryParse
і Int32.Parse
- обидва розбирають рядок на ціле число, але перший повертає булеве значення, що вказує на успіх, а друге кидає на провал.
Try...
, ...OrNull
, ...OrDefault
. @EricLippert Це не єдина конвенція в .net. Поміркуйте Single
проти SingleOrDefault
, що дуже близьке до OrNull
запропонованої ОП.