Вы используете флаг или делаете две операции? - PullRequest
2 голосов
/ 17 июля 2009

Сегодня возникла интересная дискуссия о концепции наличия одного метода с флагами вместо двух методов для каждого состояния флага. Что имеет больше смысла и почему?

void Submit(object data, bool isDraft);

или

void Submit(object data);

void SubmitAsDraft(object data);

Я склоняюсь к последнему, где каждая операция явно указывает на то, что транзакция выполняет.

Что имеет больше смысла, и существуют ли общеизвестные правила или схемы, которые подсказывают, почему?

EDIT:

Предположим, что методы предоставляются как операции через Сервис SOAP, и концепции ОО не обязательно применяются. Хотя ОО является реализацией сервиса.

Ответы [ 11 ]

0 голосов
/ 17 июля 2009

В этом нет строгого правила. Иногда, если вы слишком часто следуете правилу «иметь разные методы», ваш API будет слишком раздутым, и вы запутаетесь в том, какой метод действительно работает. Однако, если вы будете следовать подходу «делай все с параметрами», вы можете получить только один метод, в котором все указано в качестве параметров.

Но чтобы рассмотреть конкретный пример, проще прочитать имена методов, чем прочитать их параметры. В этом случае, используя два метода, вы быстро узнаете, прочитав имена методов, которые вы можете отправить черновик. Хотя вам, вероятно, следует изменить имя метода submit на submitAsFinal

Хотя я бы порекомендовал иметь два метода, один из которых назвал submitAsFinal, а другой submitAsDraft, они все равно должны откладываться на другой закрытый метод, который принимает логический параметр черновика, чтобы у вас не было дублированного кода.

...