solovyov.net

Програмування — це такий дивний процес на перетині інженерії та творчості, типа письменництва. Я не знаю, чому воно так, чи це через те, що це досить молода дисципліна (“всього” 70 років, ха-ха), чи це через надмірну складність і величезну кількість варіантів, але результат такий, що це явно не точна наука.

Так ось, через те всі поради, які є з приводу того, як програмувати, треба сприймати у контексті “тільки якщо воно має сенс” та “сам подумай трішки, ну”. Воно, вочевидь, взагалі так завжди поради треба приймати, але тут це прямо як хвороба якась!

Хтось читає про принцип Don’t Repeat Yourself, і починає робити параметрізовані функції на всі два випадки, хоча воно простіше вирішується кастомними трьома строками інлайн. Люди надивляться на переускладнені DRY’єм (пересохлі, ггг) кодові бази і потім пишуть у твітері “ні в якому разі не робіть функцію, поки хоча б три рази вона вам не знадобиться!” Впевнений, потім на цю лапшу інші люди будуть дивитися і писати “не повторюйся падлюко!” Хоча капець, це ж просто — подивись на те, що ти пишеш, і подумай, чи це має сенс бути окремою функцією? Це ж просто спосіб зробити абстрацію.

Так само правило “функція не повинна бути більше 10 рядків”. Воно народилося з того, що неграмотні люди замість структурування коду фігачили все однією довгою заплутаною функцією, і в нормальних людей лопалися очі. Але пояснити, як саме треба розділяти, як працює абстракція, не вдалося, і ось народилося тупе механічне правило. А тупі механічні правила взагалі працюють погано, а для програмування — екстремально погано (дивись вище). І потім люди починають писати пости на кшталт “не треба розділяти на функції просто так, єтц”. Але ж іноді треба, функція — це спосіб абстрагуватися від шматочку складності.

Є ще багато правил, які гуляють інтернетом, які одні люди пхають всюди “робіть тільки так”, а інші волають “ні в якому разі так не робіть”. Але насправді суть у тому, що власного розуму ніякі поради не замінять. :)

(@ tg)