Неправильные имена методов и что они говорят о структуре кода
(Заранее извиняюсь, если это повторная публикация, но я не нашел похожих сообщений)
Какие шаблоны имен плохих методов вы видели в коде и что он рассказал вам о коде.
Например, я продолжаю видеть:
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 в одном методе.