Эта статья является продолжением моей предыдущей статьи Краткое изложение - Чистый код Роберта Мартина - Часть 1: Обзор. Пожалуйста, купите книгу на Amazon, если хотите узнать больше о том, как писать значащие имена.
Важность наименования
Имена везде в программном обеспечении. Мы даем имена нашим переменным, функциям, классам и пакетам. Именование - одна из самых важных частей чистого кода. Чтобы написать код в существующей кодовой базе, мы всегда читаем код, а затем меняем его. Согласно опросу, соотношение времени чтения и записи составляет 10: 1 для среднестатистического разработчика в компании-разработчике программного обеспечения. Есть несколько основных принципов, которым вы должны следовать, прежде чем думать об имени в своем коде.
Используйте имена, раскрывающие намерение
Вместо того, чтобы писать int d; // total count of students
, всегда лучше писать int studentCount;
. Если ваша переменная требует комментария в описании, это плохое имя.
Избегайте дезинформации
Не называйте группу студенческих объектов просто studentList
. Для большинства разработчиков List
имеет другое значение. List, как правило, не хватает ArrayList для большинства разработчиков Java. Вместо этого используйте studentGroup
или просто students
в качестве имени переменной.
Делайте значимые различия
Именование серии номеров (a1, a2, a3, ..., aN)
является противоположностью намеренного присвоения имен. Такие названия не дезинформативны, они неинформативны. Они не дают подсказки о намерениях автора кода.
Удалите использование шумовых слов, поскольку они являются избыточными. Классы с именами Product
, ProductData
и ProductInfo
имеют одинаковое значение. Переменная name
лучше, чем nameString
, потому что мы знаем, что имена всегда являются строками.
Используйте произносимые имена
Всегда легко говорить о коде и передавать других, если мы используем произносимые имена.
Используйте имена с возможностью поиска
Хорошее доступное для поиска имя всегда предлагается вместо однобуквенного имени переменной. Вы можете использовать переменную String linkedInURL;
вместо String l;
. Теперь, когда большинство современных IDE поддерживают предложение имен переменных и методов в отсортированном порядке, присвоение имен серии переменных, таких как addressStreet
, addressCity
, addressState
, действительно помогает при автозаполнении.
Избегайте ментального картирования
Мы, разработчики, умны. Если мы увидим какой-то код как int a, b;
, мы автоматически выберем следующее имя переменной как int c;
. Мы должны избегать этого и использовать передовой опыт, чтобы выбрать лучшее имя.
Выбор имени класса
Всегда выбирайте существительное или существительную фразу для названия класса. Например. Customers
, WikiPage
. Избегайте использования глаголов в названиях классов.
Выбор имени метода
Выберите глагол или глагольную фразу в качестве имени метода. Поскольку это помогает понять, что он делает.
Когда конструкторы классов перегружены, используйте статические фабричные методы с именами, описывающими аргумент. Complex decimalPoint = Complex.FromDecimalNumbers(30);
лучше, чем писать Complex decimalPoint = new Complex(30);
Не пытайся быть милым, называя
Никогда не используйте сленг в имени переменной. Ваше чувство юмора может не понять всех.
Выберите одно слово для каждой концепции
Сложно иметь get
, fetch
, retrieve
в разных классах.
Когда вы используете одно и то же имя для всех классов, постарайтесь сохранить одинаковое поведение / тип возврата. Например. add
функция всегда должна возвращать список объектов во всех классах.
Используйте доменные имена для решения / проблемы
Большинство читателей вашего кода в прошлом изучали информатику. Поэтому, если вы используете detectShortestPath
, detectRaceCondition
в качестве имени метода, они поймут его лучше.
Добавьте содержательный контекст к своим именам
В методе, если вы используете переменные как street
, city
, country
для хранения некоторых значений адреса, переменная с именем state
автоматически присоединяется к синтаксису адреса, но могла бы использоваться в другом контексте. Всегда лучше добавлять значимый контекст, например addrStreet
, addrCity
и addrCountry
, в качестве имен переменных.
Прочтите мою следующую статью - Часть 3: Функции, чтобы узнать, как писать чистые функции.