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