Неправильные имена методов и что они говорят о структуре кода

(Заранее извиняюсь, если это повторная публикация, но я не нашел похожих сообщений)

Какие шаблоны имен плохих методов вы видели в коде и что он рассказал вам о коде.

Например, я продолжаю видеть:

public void preform___X___IfNecessary(...);

Я считаю, что это плохо, потому что операция X имеет инверсию условий. Обратите внимание, что это публичный метод, потому что методы классов могут на законных основаниях требовать таких частных помощников

4 ответа

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

InsertImportQueueRecord

Я ненавидел это имя. Я изменил это на

ImportItem

Первый не только использует утомительную формулировку, чтобы выразить простую концепцию, но излишне раскрывает детали реализации. Абонентам не нужно было знать, что очередь была использована, и если бы они это сделали, я бы назвал это как QueueItemImport, или же ScheduleImport указать, что импорт элемента был поставлен в очередь или запланирован. Кроме того, концепция вставки записи является языком реализации, а не проблемой, и ее следует избегать.

thing(), doThing(), и действительно DoThing()

Я вижу это, когда люди не совсем понимают, что должна делать функция. Может быть, он проверяет, нужно ли сначала какое-либо действие, обновляет кэши или отправляет уведомления об изменениях. Кто знает?

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

Если краткое имя метода не может быть определено, это хороший признак того, что метод пытается сделать слишком много, и следует рассмотреть вопрос о рефакторинге.

Очевидным примером будет ValidateFormData_PersistToDB_SendEmail(),

Хотя, поскольку я являюсь разработчиком C#, я бы не осмелился использовать подчеркивание в любом случае.

Еще один, который я недавно заметил, Куча частных методов вида:

private void SOMETHINGBecauseOf__a__(..);
private void SOMETHINGBecauseOf__b__(..);
private void SOMETHINGBecauseOf__c__(..);

Я не могу придумать вескую причину для того, чтобы иметь в методе метод Fr omOf или делать что-то подобное. Это выглядит как хороший пример для оператора switch/if в одном методе.

Другие вопросы по тегам