суббота, 23 января 2016 г.

Глава 11. Сила имён переменных

Глава посвящена тому, как нужно именовать переменные.
Основной принцип - имя должно полно и точно описывать сущность, представляемую переменной.
Также при именовании переменной нужно ориентироваться на проблему, которую она решает, а не на конкретную реализацию решения.
Хороший диапазон имён переменных 8-20 символов.
Важное правило - чем короче область видимости переменной, тем короче может быть её имя.
Полезно заранее оговорить, как будут применяться спецификаторы вычисляемых значений(Total, Sum, Average, Record, String, Pointer ...) - на какой они будут позиции в имени.
Также, как и для методов, полезно последовательно использовать антонимы:


  • begin/end
  • first/last
  • locked/unlocked; min/max
  • next/previous
  • old/new
  • opened/closed
  • visible/invisible
  • source/target
  • source/destination
  • up/down
Для переменных некоторых типов нужно использовать дополнительные соглашения по именованию:

  • Индексы именуются обычно i, j, k
  • Переменным статуса нужно назначать имя описывающее возможные значения статуса, например reportType вместо statusFlag
  • К временным переменным нужно относиться с подозрением, если встречается переменная temp, возможно существует более подходящее название, описывающее суть переменной, или эта переменная служит для хранения разных сущностей, тогда лучше разбить её на две отдельные
  • Булевым переменным присущи типичные имена:
    • done - означает, что операция завершилась(результат не важен)
    • error - признак возникновения ошибки
    • found - признак того, что обнаружено искомое значение
    • success или ok - признак успешного завершения операции
  • Также при именовании булевых переменных часто используют префикс is + не нужно использовать отрицательные переменные(notFound, notDone) - это мешает красивым условиям и получается что-то типа if not notFound
  • Переменные хранящие элемент перечисления можно называть с учётом имени перечисления
В больших и крупных проектах желательно заранее сформировать конвенции именования переменных.
Конвенции бывают двух степени формальности - формальные и неформальные.
Конвенция, не зависящая от языка:

  • Проводим различие между именами переменных и именами методов
  • Отличаем классы и объекты(классы обычно с большой буквы, а объекты с маленькой)
  • Идентифицируем глобальные переменные
  • Идентифицируем переменные-члены
  • Идентифицируем имена типов
  • Идентифицируем именованные константы
  • Идентифицируем элементы перечислений
  • Идентифицируем неизменяемые параметры методов
  • Форматирование имён для удобства чтения(Паскаль, SnakeCase, CamelCase)
Так же для каждого отдельного языка могут существовать дополнительные конвенции, связанные с его особенностями.
В проекте в котором применяются несколько языков нужно стремиться сблизить их конвенции.

В отдельных проектах используются стандартизованные префиксы - определяется набор префиксов, отражающих названия основных сущностей предметной области, типов данных, какой-то отдельной семантики. Потом этот набор используется для именования переменных.

Если название переменной вышло очень длинным, нужно его сократить.
Вот некоторые советы по сокращению имён:

  • Использовать стандартные аббревиатуры
  • Удалять все гласные, не являющиеся первыми буквами имён
  • Удалять артикли и союзы
  • Сохранять одну или несколько первых букв каждого слова
  • Обрезать слова согласованно(по 1, 2 или 3 буквы - везде одинаково)
  • Сохранять первую и последнюю буквы слова
  • Сохранять до трёх выразительных слов
  • Удалять бесполезные суффиксы(ing, ed ...)
  • Сохранять наиболее выразительный звук каждого слога
  • Проверять, что смысл названия не изменялся при сокращении
Не стоит использовать фонетические аббревиатуры, так как другие не смогут угадать сходу, как вы заменили некоторые слоги, когда захотят использовать объявленную вами переменную.
Что ещё не нужно делать для сокращения имён:

  • Сокращать слова только на 1 символ
  • Сокращать одинаковые слова в разных переменных по-разному
  • Сокращать так, что имя потом нельзя чётко произнести
  • Не нужно сокращать до таких имён, которые легко неверно прочитать или произнести
Полезные советы:
  • Если для разных имён получаются одинаковые сокращения нужно найти синонимы
  • Нужно документировать короткие имена прямо в коде при помощи таблиц
  • Указывать все сокращения в проектном документе
  • Помнить, что имена создаются для программистов, читающих код
  • Избегать имён, содержащих цифры
  • Избегать орфографических ошибок
  • Избегать слов, при написании которых люди часто делают ошибки
  • Проводить различия между именами не только по регистру букв(не нужно делать переменные FRG и frg)
  • Избегать смешения естественных языков(пусть всё будет на английском)





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

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