четверг, 25 мая 2017 г.

Составное имя - это дурнопахнущий код

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

Область видимости переменной, как и метода, например. Посмотрите на этот класс Ruby:

class CSV
  def initialize(csvFileName)
    @fileName = csvFileName
  end
  def readRecords()
    File.readLines(@fileName).map |csvLine|
      csvLine.split(',')
    end
  end
end

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

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

class CSV
  def initialize(file)
    @file = file
  end
  def records()
    File.readLines(@file).map |line|
      line.split(',')
    end
  end
end

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

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

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

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

PS. Кроме того, избыточные переменные также являются злом

Комментариев нет:

Отправить комментарий