A Compound Name Is a Code Smell

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Вы называете переменные, такие как textLength, table_name или current-user-email? Все три являются сложными именами, состоящими из более чем одного слова. Несмотря на то, что они выглядят более описательными, чем name, length или email, я настоятельно рекомендую избегать их использования. Я считаю, что переменная с более сложным именем, чем существительное, является признаком проблем в коде. Почему? Потому что мы обычно даем переменной сложное имя, когда ее область видимости настолько большая и сложная, что использование простого существительного может вызвать двусмысленность. А большая и сложная область видимости - это явный признак проблем в коде.

Область видимости переменной - это место, где она видима, например, метод. Взгляните на этот класс в Ruby:

Видимая область действия переменной csvFileName - это метод initialize(), который является конструктором класса CSV. Зачем ему сложное имя, состоящее из трех слов? Разве не ясно, что одноаргументный конструктор класса CSV ожидает имя файла с разделенными запятыми значениями? Я бы переименовал его в file.

Далее, область действия @fileName - это весь класс CSV. Переименование единственной переменной в классе в @file не вызовет никаких путаниц. Все равно ясно, о каком файле идет речь. Та же ситуация с переменной csvLine. Очевидно, что мы имеем дело с CSV-строками. Префикс csv - это просто избыточность. Вот как я бы переработал класс:

Теперь это выглядит ясно и лаконично.

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

Если у нас есть пять переменных, не можем ли мы найти пять существительных для их названия?

Адам и Ева не имели фамилий. Они были уникальными в Эдеме, как и многие другие персонажи Ветхого Завета. Вторые и отчества были изобретены позже для разрешения неоднозначности. Чтобы сохранить ваши методы и классы чистыми и надежными, а также предотвратить неоднозначность, постарайтесь давать своим переменным и методам уникальные имена из одного слова, как Адаму и Еве, которых именовал Бог.

P.S. Избыточные переменные также являются злом.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:08

sixnines availability badge   GitHub stars