Skip to content

Commit 803b7ff

Browse files
authored
Apply suggestions from code review
1 parent 6d96878 commit 803b7ff

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

1-js/03-code-quality/04-ninja-code/article.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
```quote author="Конфуцій (Бесіди і судження)"
5-
Навчання без міркування даремне, міркування без навчання небезпечне.
5+
Навчання без міркування -- даремне, міркування без навчання -- небезпечне.
66
```
77

88
Ніндзя-програмісти минулого використовували ці хитрощі, щоб загострити розум тих, хто буде підтримувати їхній код.
@@ -11,19 +11,19 @@
1111

1212
Початківці часом використовують їх навіть краще за ніндзя-програмістів.
1313

14-
Уважно перечитайте ці хитрощі й вирішіть, хто ви є ніндзя, початківець, чи може ґуру перевірки коду?
14+
Уважно перечитайте ці хитрощі й вирішіть, хто ви є -- ніндзя, початківець, чи може ґуру перевірки коду?
1515

1616

1717
```warn header="Обережно, іронія!"
1818
Багато тих, хто намагався піти шляхом ніндзя. Мало тих, кому це вдалося.
1919
```
2020

2121

22-
## Стислість сестра таланту
22+
## Стислість -- сестра таланту
2323

2424
Пишіть якомога коротший код. Покажіть, наскільки ви розумні.
2525

26-
Нехай неочевидні мовні нюанси керують вами.
26+
Нехай неочевидні особливості мови направляють вас.
2727

2828
Наприклад, розглянемо застосування тернарного оператора `'?'`:
2929

@@ -34,7 +34,7 @@ i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
3434

3535
Круто, справді? Якщо ви напишете щось подібне, то програміст, який натрапить на цей рядок і намагатиметься зрозуміти, яке ж значення має `i`, пізнає неабиякий дзен. І, врешті-решт, прийде до вас за просвітленням.
3636

37-
Скажіть йому, що коротше це завжди краще. Допоможіть йому стати на шлях ніндзя.
37+
Скажіть йому, що коротше -- це завжди краще. Допоможіть йому стати на шлях ніндзя.
3838

3939
## Однолітерні змінні
4040

@@ -43,11 +43,11 @@ i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
4343
Ім’я, яке можна назвати, не є постійним ім’ям.
4444
```
4545

46-
Ще один спосіб писати стислий код використовувати однолітерні змінні. Наприклад: `a`, `b` або `c`.
46+
Ще один спосіб писати стислий код -- використовувати однолітерні змінні. Наприклад: `a`, `b` або `c`.
4747

48-
Коротка змінна зникає в коді, наче ніндзя в лісі. Ніхто не зможе знайти її навіть через "пошук" редактора. І бодай її знайдуть, вони не зможуть "розшифрувати" за що саме відповідають змінні `a` чи `b`.
48+
Коротка змінна зникає в коді, наче ніндзя в лісі. Ніхто не зможе знайти її навіть через "пошук" в редакторі. І бодай її знайдуть, вони не зможуть "розшифрувати" за що саме відповідають змінні `a` чи `b`.
4949

50-
Але є один виняток із правил. Справжній ніндзя ніколи не використовуватиме `i` як лічильник в циклі `"for"`. Де завгодно, тільки не тут! Озирніться є багато інших екзотичних літер. Наприклад, `x` або `y`.
50+
Але є один виняток із правил. Справжній ніндзя ніколи не використовуватиме `i` як лічильник в циклі `"for"`. Де завгодно, тільки не тут! Озирніться -- є багато інших екзотичних літер. Наприклад, `x` або `y`.
5151

5252
Екзотична змінна в ролі лічильника особливо доречна, коли тіло циклу займає одну-дві сторінки (чим більше, то краще). У такому випадку ті, хто зануриться глибоко в код циклу, не зможуть швидко здогадатись, що змінна `x` насправді є лічильником.
5353

@@ -67,35 +67,35 @@ i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
6767
## Будьте абстрактними
6868

6969
```quote author="Лао-цзи (Дао де цзін)"
70-
Великий квадрат не має кутів,
71-
Великий глек довго ліпиться,
72-
Великий звук не можна почути,
70+
Великий квадрат не має кутів,<br>
71+
Великий глек довго ліпиться,<br>
72+
Великий звук не можна почути,<br>
7373
Великий образ неозорий.
7474
```
7575

7676
Обираючи ім’я, намагайтесь використовувати найбільш абстрактне слово. Прикладом може бути `obj`, `data`, `value`, `item`, `elem` тощо.
7777

7878
- **`data` є ідеальним варіантом для імені змінної.** Використовуйте його всюди, де можете. І справді, кожна змінна має *дані*, вірно?
7979

80-
А що робити, якщо ім’я `data` вже зайняте? Спробуйте `value` воно також універсальне. Врешті-решт, кожна змінна набуває якесь *значення*.
80+
А що робити, якщо ім’я `data` вже зайняте? Спробуйте `value` -- воно також універсальне. Врешті-решт, кожна змінна набуває якесь *значення*.
8181

8282
- **Добирайте ім’я змінним згідно з їхнім типом: `str`, `num`...**
8383

8484
Спробуйте. Той, що щойно став на шлях ніндзя, може засумніватися чи дійсно такі імена корисні. Авжеж!
8585

8686
Так, ім’я змінної дещо означає. Це допомагає зрозуміти, що ми використовуємо: рядок, число, чи щось ще. Проте коли сторонні люди намагатимуться зрозуміти код, вони будуть здивовані, що інформація про те, що саме містить змінна, відсутня. У результаті вони не зможуть змінити ваш добре обміркований код.
8787

88-
Тип змінної досить легко знайти під час налаштування. Але що означає її ім’я? Яку саме строку/число вона зберігає?
88+
Тип змінної досить легко знайти під час налаштування. Але що означає її ім’я? Який саме рядок/число вона зберігає?
8989

9090
Жодного шансу дізнатися про це без тривалої медитації!
9191

92-
- **Але що робити, коли й такі імена скінчились?** Просто додайте число: `data1`, `item2`, `elem5`...
92+
- **Але що робити, коли й такі імена скінчились?** Просто додайте число: `data1, item2, elem5`...
9393

9494
## Перевірка уваги
9595

9696
Тільки дуже уважний програміст повинен мати шанс зрозуміти ваш код. Проте як це перевірити?
9797

98-
**Один зі способів використання схожих імен змінних, наприклад `date` і `data`.**
98+
**Один зі способів -- використання схожих імен змінних, наприклад `date` і `data`.**
9999

100100
Змішуйте їх всюди, де це можливо.
101101

@@ -110,11 +110,11 @@ i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
110110

111111
Використання *схожих* імен для *однакових* речей зробить життя цікавішим і продемонструє рівень вашої креативності.
112112

113-
Наприклад, розглянемо префікси функцій. Якщо функція виводить повідомлення на екран почніть ім’я з `display…`, як то `displayMessage`. А для іншої функції, що показуватиме на екрані ще щось (скажімо, ім’я користувача), оберіть ім’я з `show…` (наприклад, `showName`).
113+
Наприклад, розглянемо префікси функцій. Якщо функція виводить повідомлення на екран -- почніть її ім’я з `display…`, як то `displayMessage`. А для іншої функції, що показуватиме на екрані ще щось (скажімо, ім’я користувача), почніть ім’я з `show…` (наприклад, `showName`).
114114

115115
Натякніть, що є деяка тонка відмінність між цими функціями, хоча насправді її немає.
116116

117-
Домовтесь зі своїми ніндзя-колегами, що якщо Іван починає називати функції, що показують щось, використовуючи `display...`, тоді Петро може використовувати `render..`, а Ганна `paint...`. Зауважте, наскільки цікавим та різноманітним став код.
117+
Домовтесь зі своїми ніндзя-колегами, що якщо Микола починає називати функції, що показують щось, використовуючи `display...`, тоді Петро може використовувати `render..`, а Ганна -- `paint...`. Зауважте, наскільки цікавим та різноманітним став код.
118118

119119
А тепер коронний прийом!
120120

@@ -125,9 +125,9 @@ i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
125125
## Використовуйте імена повторно
126126

127127
```quote author="Лао-цзи (Дао де цзін)"
128-
При встановленні порядку
129-
з’явилися імена.
130-
Оскільки виникли імена,
128+
При встановленні порядку<br>
129+
з’явилися імена.<br>
130+
Оскільки виникли імена,<br>
131131
потрібно знати межу їх використання.
132132
```
133133

@@ -157,7 +157,7 @@ function ninjaFunction(elem) {
157157

158158
Таке трапляється доволі часто. Вбивчий прийом, навіть проти досвідчених ніндзь.
159159

160-
## Підкреслення це весело
160+
## Підкреслення -- це весело
161161

162162
Ставте підкреслення `_` та `__` перед іменами змінних. Наприклад, `_name` або `__value`. Краще буде, якщо тільки ви будете розуміти їхнє значення. А ще краще, щоб ніякого значення не було зовсім, додавайте їх задля розваги. Або використовуйте різні значення в різних місцях.
163163

@@ -169,7 +169,7 @@ function ninjaFunction(elem) {
169169

170170
Нехай усі бачать, наскільки величні ваші сутності! Читач обов’язково зрадіє таким іменам, як `superElement`, `megaFrame` та `niceItem`.
171171

172-
Справді, з одного боку, дещо все ж таки написано: `super..`, `mega..`, `nice..`. Але, з іншого боку це не пояснює нічого. Той, хто читатиме ваш код, витратить не одну годину свого оплаченого робочого часу на медитацію і пошуки прихованого значення цих слів.
172+
Справді, з одного боку, дещо все ж таки написано: `super..`, `mega..`, `nice..`. Але, з іншого боку -- це не пояснює нічого. Той, хто читатиме ваш код, витратить не одну годину свого оплаченого робочого часу на медитацію і пошуки прихованого значення цих слів.
173173

174174

175175
## Перекриття зовнішніх змінних
@@ -217,15 +217,15 @@ function render() {
217217
## Могутні функції!
218218

219219
```quote author="Лао-цзи (Дао де цзін)"
220-
Вічне Дао пронизує Собою все.
220+
Вічне Дао пронизує Собою все.<br>
221221
Воно є і праворуч, і ліворуч.
222222
```
223223

224224
Не треба обмежувати алгоритм функції лише тим, що пов’язано з її ім’ям. Мисліть ширше.
225225

226226
Наприклад, функція `validateEmail(email)` може (окрім перевірки адреси електронної пошти на відповідність правилам) показувати повідомлення про помилку та пропонувати ввести нову адресу.
227227

228-
Додаткові дії не мусять бути зрозумілими з імені функції. Справжній ніндзя-програміст зробить їх також неочевидними й в самому коді.
228+
Додаткові дії не мусять бути зрозумілими з ім'я функції. Справжній ніндзя-програміст зробить їх також неочевидними й в самому коді.
229229

230230
**Поєднання декількох дій в одну захищає ваш код від повторного використання.**
231231

@@ -235,6 +235,6 @@ function render() {
235235

236236
Всі "поради", зазначені вище, здобуті з реального коду... Іноді написаного доволі досвідченими програмістами. Можливо, навіть досвідченішими за вас ;)
237237

238-
- Дотримуйтесь деяких з цих порад і у вашому коді буде повно несподіванок.
239-
- Дотримуйтесь більшості з цих порад і ваш код буде дійсно вашим; ніхто не захоче його читати, тим паче змінювати.
240-
- Дотримуйтесь усіх порад і ваш код стане неоціненним уроком для молодих програмістів, які шукають просвітлення.
238+
- Дотримуйтесь деяких з цих порад -- і у вашому коді буде повно несподіванок.
239+
- Дотримуйтесь більшості з цих порад -- і ваш код буде дійсно вашим; ніхто не захоче його читати, тим паче -- змінювати.
240+
- Дотримуйтесь усіх порад -- і ваш код стане безцінним уроком для молодих програмістів, які шукають просвітлення.

0 commit comments

Comments
 (0)