Почти всеки ден някой ми казва, че този или онзи код не е чист. Не е четлив. Не подлежи на поддръжка.

Но в цялата тази концепция има някои зеещи логически пърдаши.

Всеки учител знае, че е жизненоважно да познавате аудиторията си. Реч, която е на място за един човек, може да бъде напълно неразбираема за друг.

Същото важи и за кода.

Като преподавател по код, не мога да преброя броя пъти, когато съм показвал на класа някаква нова езикова функция/модел/идиом само за да накарам някой ученик да ме информира, че няма да използва споменатата функция/модел/идиом, защото това прави кодът е напълно нечетлив и неподдържан.

Първият път, когато видях деструктуриране на JavaScript, се заклех, че е нечетлив и отказах да го използвам. Но по някакъв чуден начин сега го използвам всеки ден и не мога да живея без него. И намирам, че прави кода ми по-сбит и четим. Същото важи и за оператора за разпространение на JavaScript. И безброй други езикови функции/модели/идиоми.

Първият път, когато се опитах да направя функционално програмиране, си помислих, че е ужасно. Защо, по дяволите, някой би искал да направи това? Днес той е напълно интуитивен и полезен и за мен по-лесен за четене и поддръжка. Днес използвам функции map, filter, reduce, от по-висок ред почти всеки ден и намирам кода за кратък и четим.

Мисля, че „типовете“ правят моя код по-самодокументиращ се и четим. Моят партньор смята, че това прави кода по-малко четим.

Когато извиквате функция, Ruby, Groovy и Kotlin ви позволяват да поставите последния аргумент след скобите (ако този аргумент е ламбда). Ако погледнете част от моя по-стар код, ще видите, че отказах да използвам тази функция. Стана ми трудно да чета. Сега го харесвам и мисля, че прави кода ми по- четим. Това е буквално една от най-полезните функции на езика. Но точно вчера един от най-добрите ми приятели (и много умен човек) настоя, че тази функция е ужасна и прави кода по-труден за четене.

Долен ред:

  1. Почти невъзможно е да се различи нечетливо от непознато. Ако програмист се опита да ми каже, че този или онзи код е нечетим и аз им кажа, че е непознат, а не нечетим, те ще се бият до смърт, за да постигнат своето. Никога не съм печелил този спор. Никога.
  2. Кодът, който някога смятах за труден за четене, сега е кратък, чист и четим.
  3. Чистият код на един човек е спагети за друг.

Това не означава, че няма някои универсално добри идеи относно четливостта. Но това е друга тема.

Затъпяване на вашия код

Ако има езикова характеристика/модел/идиом, който начинаещите във вашия екип намират за нечетлив, трябва ли да избягвате въпросния елемент/модел/идиом? Или новобранците трябва да го засилят?

Заключение

И накрая, всеки код, който смятам за четим, е четим. Всички останали грешат. 😀