В моей команде мы тесно сотрудничаем с несколькими архитекторами программного обеспечения. Они одобряют все проектные решения наших проектов, делают некоторые обзоры кода и т. Д.
Наши проекты состоят в основном из серверной функциональности, реализованной на 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
предложенному ОП.