|
1 | 1 | ## 2.1. Значення, ідентифікатор, змінна та константа, літерал, присвоєння |
2 | 2 |
|
| 3 | +> Ідентифікатор (identifier) |
| 4 | +
|
3 | 5 | Найважливіше у програмуванні — це давати зрозумілі імена ідентифікаторам (змінним, константам, параметрам, функціям, класам і т.д.) і розташовувати їх в програмі так, щоб вони були видні у потрібних місцях. При цьому моємо намагатися скоротити їх область видимості. Ідентифікатори можуть бути глобальними, оголошеними у файлі або імпортованими з інших модулів програми. |
4 | 6 |
|
| 7 | +Є різні конвенції (домовленості) про іменування, традиції мов і парадигм, але у всіх них імена мають бути _консистентні_ (однотипні) і _зрозумілі_ навіть для тих, хто цей код не писав. Приклади хороших імен ідентифікаторів: |
| 8 | + |
| 9 | +- Глобальні змінні: `MAX_PURCHASE`, `REQUEST_TIMEOUT`, `ERROR_CODES`; |
| 10 | +- Колекції: `prices`, `goods`, `boughtItems`; |
| 11 | +- Окремі значення: `amount`, `groupName`, `total`; |
| 12 | +- Функції: `calculateSubtotal`, `calculateTotal`, `validateExpenses`; |
| 13 | + |
| 14 | +Приклади поганих імен розглянемо докладніше: |
| 15 | + |
| 16 | +- Глобальна константа `Maximum` - не зрозуміло, максимум чого, без другого слова константа не може бути глобальною; порушені конвенції використання малих і великих букв, замість `camelCase` тут використаний `PascalCase` і таку константу складно помітити при читанні коду; |
| 17 | +- Таймаут запитів `request_timeout` - порушені конвенції; |
| 18 | +- Коди помилок `ERCODE` - складно читається; незрозуміло, що це колекція кодів, а не один код; |
| 19 | +- Масив цін `numbers` - не потрібно називати масиви іменами типів даних, які в них знаходяться, з цієї назви дуже складно зрозуміти, що там ціни; |
| 20 | +- Масив товарів `arrayOfGoods` - не додавайте назви структур даних до імен змінних; |
| 21 | +- Надто довге ім'я для колекції товарів: `orderItemsInShopBasket`; |
| 22 | +- Неочевидне скорочення `amt`; |
| 23 | +- Крім явного порушення концепцій `grp_N` ще й вводить в оману, це погане скорочення, не потрібно заощаджувати на літерах до такого ступеня; |
| 24 | +- Не називайте змінні транслітом, як `itogo2` і не використовуйте цифри для іменування змінних зі схожим змістом, спробуйте врахувати відтінки сенсу, наприклад: `total` та `subtotal`; |
| 25 | +- Якщо структура містить два значення, як `totalAndSubtotal`, то потрібно назвати її таким словом, яке узагальнює їх, наприклад `order`; |
| 26 | +- Крім порушення конвенцій `BuyerCalculations` ще й дуже не точний, не зрозуміло, які саме обчислення; |
| 27 | +- Короткі скорочення типу `VE` - абсолютно неприйнятні як імена, якщо тільки це не загальноприйняті `i` та `j` для циклів або, `x` і `y` для координат і ще кілька подібних випадків. |
| 28 | + |
5 | 29 | > Оголошення та присвоєння (assignment) |
6 | 30 |
|
7 | 31 | ```js |
|
0 commit comments