Правильные имена для вашего кода

Повышаем читабельность и безопасность.
16 августа 2017326451Илья Бубнов28381125

Не важно, пишете ли вы программу только для себя или с вашими исходниками будет работать кто-то ещё, выбор правильных имён – важный этап в написании кода. Грамотные названия сказываются на трёх факторах:

  • Информативность. Имена говорят о том, что происходит в коде.
  • Изменяемость. Добавить или изменить названия переменных проще при правильной иерархии.
  • Безопасность. При внесении изменений вы ничего не упустите и не потеряете.

Для начала давайте разберёмся, каких имен лучше избегать в своём коде.

Плохие названия

Фундаментальный пункт — не используйте имена, запрещённые в языке, на котором вы пишете. Это касается названий базовых типов, классов, операторов. В некоторых языках, например, C++, лучше не пользоваться нижними подчёркиваниями, особенно в начале названий, так как они зарезервированы компилятором. Ну и конечно большинство спецсимволов — табу.

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

  • состоящих из одной-двух букв;
  • созданных с добавлением порядкового числа на конце;
  • не имеющие конкретной привязки к области применения.

Переменные с такими именами легко потерять в коде, что снижает читаемость и удобство работы.

Третий вид плохих имён — сокращения и аббревиатуры. С одной стороны, это уже уникальные названия, они легко распознаются глазом, быстро пишутся. С другой — для стороннего читателя ваши сокращения могут оказаться непонятными. Например, вместо VisNam проще написать VisibleName, или придётся каждый раз добавлять комментарии. Важно сохранять баланс между информативностью и длиной. Иногда можно обойтись популярной аббревиатурой, а иногда будет уместно создать имя длиной в 15−20 символов.

Ну и финальный вид «плохого» — отрицания. При чтении кода разработчику мысленно придётся выполнять двойную работу: вспоминать действительное значение переменной и сопоставлять с отрицаемой. Поэтому количество таких имён надо минимизировать или исключить совсем.

Теперь, когда мы разобрались с неудачными именами для кода, пора поговорить о создании хороших.

Хорошие названия

Правило первое — соответствие уровню абстракции. Это означает, что ваше имя должно быть привязано к окружающему коду, раскрывать свое назначение.

Допустим, у нас есть база данных студентов, куда внесены ФИО, возраст, пол и пр. Нам надо создать функцию, которая бы выводила имена всех студентов с одного курса. Варианты плохих имен: ShowAll (CourseName), DisplayStudents (CourseName), DisStudN (CourseName), ShowStudentsNamesFromCourse (CourseName). Лишь последнее из них обладает требуемой информативностью, но его длина избыточна для столь простой функции. Вариант удачного имени: ShowStudentsFIO(CourseName). Любой разработчик, который будет читать код, сразу поймёт назначение функции.

Второе правило — создавать уникальные типы, большинство языков это позволяет делать. Например, для задания возраста не нужно использовать int, так как диапазон допустимых значений избыточен. Поэтому мы можем создать новый тип (класс) age, наследовать его от int, ограничить от 0 до 100 и использовать его для соответствующей переменной. Этим мы исключим нежелательные значения и повысим читаемость кода.

Правило три — компактность. Никакой избыточной информации и подробных описаний. К примеру, возьмём название ValueAddedTax — лаконичное и понятное. Но в данном случае более узнаваемой и понятной будет аббревиатура НДС (VAT). Или в описанном выше примере про студентов имя ShowStudentsNamesFromCourse (CourseName) функция содержит ненужную часть «FromCourse», которая является аргументом.

Грамотный выбор имён для будущего кода — операция не менее важная, чем тестирование или отладка. Она позволяет избежать ошибок, повышая читаемость. Перед тем, как приступить к коду, потратьте пару часов на составление списка переменных и их имён. В будущем это время окупится многократно.

Новые комментарии