Наименование переменных и стиль программирования
Наименование переменных
Правила наименования переменных брались в том числе по этой ссылке.
Функции - глаголы
Переменные - существительные
Предикаты - is_empty (возвращает true или false)
Если исследуется вхождение - has_children (возвращает true или false)
Количество user_count
Коллекции (массивы) - множественное число - errors
Наименование функций должно быть в формате "действие_объект_уточнение"
get_name();
set_name();
get_name_by_id();
Попытка определения префиксов (а может постфиксов) для типов
a массив (array)
c счетчик (counter)
o объект (object)
m член класса
p указатель (pointer)
s строка(string)
st структура (struct)
v коллекции (vector, map и т.д.)
user_id или id_user?
user_id
Сначала сущность, а потом её характеристики.
Обоснование, ну просто по логике
шкаф->книга->страница
Поиск в Google выдает страниц с user_id в
40 раз больше чем с id_user
Стиль программирования
- В одной строке инициализируется одна переменная
- Для указателей и ссылок * и & должны относиться к типу. Это позволит отделять их от операций разыменования и взятия адреса (которые будут относиться к имени)
- Избегай указателей.
- Используй ссылки а не указатели для аргументов функций которые должны быть изменены.
- Используй const там где возможно. Не нужно для параметров функции передаваемых по значению, т.к. передаваемая переменная копируется и не может быть изменена.
- Объявляй переменную непосредственно перед использованием.
- Не используй конструкцию типа using namespace std; Она загрязняет глобальное пространство имен и может вызвать трудноуловимый конфликт имен или замену используемых переменных или функций. В маленьких учебных программах я буду постоянно нарушать это правило.
- Не используй Венгерскую нотацию, так как она связывает имя переменной с типом, и в случае его смены это вызывает проблемы.
- Не используй Макросы засоряют глобальное пространство имен, на этапе их распаковки препроцессором не проверяется тип переменных, при раскрытии в макросе выражений может порядок вычисления операций быть отличным от "ожидаемого". Inline функции не обладают недостатками макросов и не уступают в производительности (также раскрываются без необходимости вызова).
- Не используй go to, так как данный оператор усложняет анализ и отладку кода (порождает "спагетти код"). По той же причине нужна осторожность с continue и break.
- Вместо "магических чисел" (например 20) нужно использовать именованные константы (например int MAX_COUNT_PEOPLE = 20;). Это позволяет внести изменения в программе или функции только в одном месте.
- Используй геттеры и сеттеры вместо обращения к переменным, это позволяет уменьшить поиск возможных изменений переменной (достаточно просмотреть только сеттеры) и в случае смены типа переменной, достаточно только заменить обработчики а не править весь код.
2023-04-11
Понравилась страница?
Добавить в закладки
Или поделиться!
Связанные темы
Ассемблерный листинг С++ Бенчмарки в С++ Рисование в консоли windows на С++ Функции в С++ Параметры функции в С++ Глоссарий С++. Идентификаторы, квалификаторы, модификаторы, объявление, определение и т.д.. Исключения в С++. Выбрасывание и ловля исключения. Достоинства и недостатки C++ Сборка приложения без IDE C++ с помощью MinGW и Qt Перегрузка функций и операторов в С++ Случайные числа в С++. Полиномиальная генерация случайных чисел. Ссылки в С++ Рекурсия в С++. Примеры рекурсивных программ и без использования. Шаблоны C++ Наименование переменных и стиль программирования Версия компилятора С++ Время выполнения программы C++