HowProgrammingWorks/Book

Sync 2-1 from ru to uk

tshemsedinov opened this issue · 0 comments

Here is latest update of 2-1 section:

Есть разные конвенции (договоренности) о именовании, традиции языков и парадигм, но во всех них имена должны быть _консистентные_ (однотипные) и _понятные_ даже для тех, кто код этот не писал. Примеры хороших имен идентификаторов:
- Глобальные переменные: `MAX_PURCHASE`, `REQUEST_TIMEOUT`, `ERROR_CODES`
- Коллекции: `prices`, `goods`, `boughtItems`
- Отдельные значения: `amount`, `groupName`, `total`
- Функции: `calculateSubtotal`, `calculateTotal`, `validateExpenses`
Примеры плохих имен рассмотрим подробнее:
- Глобальная константа `Maximum` - не понятно, максимум чего, без второго слова константа не может быть глобальной; нарушены конвенции использования строчных и заглавных букв, вместо `camelCase` тут использован `PascalCase` и такую константу сложно заметить при чтении кода;
- Таймаут запросов `request_timeout` - нарушены конвенции;
- Коды ошибок `ERCODE` - сложно читается; не понятно, что это коллекция кодов, а не один код;
- Массив цен `numbers` - не нужно называть массивы именами типов данных, которые в них находятся, из этого названия очень сложно понять, что там цены;
- Массив товаров `arrayOfGoods` - не добавляйте названия структур данных в имена переменных;
- Слишком длинное имя для коллекции товаров: `orderItemsInShopBasket`;
- Неочевидное сокращение `amt`;
- Кроме явного нарушения концепций `grp_N` еще и вводит в заблуждение, это плохое сокращение, не нужно экономить на буквах до такой степени;
- Не называйте переменные транслитом, как `itogo2` и не используйте цифры для именования переменных с похожим смыслом, попробуйте учесть оттенки смысла, например: `total` и `subtotal`;
- Если структура содержит два значения, как `tolalAndSubtotal`, то нужно назвать ее таким словом, которое обобщает их, например `order`;
- Кроме нарушения конвенций `BuyerCalculations` еще и очень не точный, не понятно, какие именно вычисления;
- Короткие сокращения типа `VE` - совершенно неприемлимы в качестве имен, если только это не общепринятые `i` и `j` для циклов или, `x` и `y` для координат и еще несколько подобных случаев.