Мненията за коментарите (тези в кода) са разнородни. Едни ще ви кажат, че е добре да имате ред коментар описващ всеки пет-десет. Други проповядват добра документация на всеки клас и метод. Някои дори говорят за literate programming. Въобще, хората си умират да бухат текст в кода. Вероятно знаете, че аз съм аскет в това отношение. Предпочитам да прокарвам идеите си с Ruby, а не с английски. Ако някое парче е твърде сложно, най-много да го разбия на различни методи с добри имена. Четящият няма да е идиот. Ще го схване. Пък и упражнението ще му е полезно.
Но като всеки мъдър човек, периодично поставям убежденията си под съмнение. Човек греши. Особено ако е научил нещо на 14. Все пак, garbage collector-ите работят добре в истинския свят и променливите са използваеми и без деклариране. Може и да греша за коментарите. Може би има какво да се иска от моя минималистичен подход.
Първо, ще подчертая, че стратегията ви към коментарите трябва да е консистентна с екипа ви и възгледите на отделните му членове. Трябва да коментирате както е най-подходящо за ситуацията. Готово. Покрих си гърба. Сега ще ви разкажа за Оскар.
Оскар е любопитна личност. Финландец, живеещ с жената и децата си в Швеция. Ако знаете поне мъничко за тези народи, вече надушвате колко колоритна личност е. А и говореше руски. Работил е като системен администратор и журналист. Интервюирал е Линус Торвалдс в дома му. Първия път, като бе в България, полицаите го спрели на улицата, за да му проверят документите. Понеже ги гледал твърде дълго в очите, като ги подминавал.
Като сложна органична система, базирана на въглерод, Оскар е много висок, много слаб, с много дълга и много руса коса. И много сини очи.
Като програмист е… особен. Ползва emacs от времената, в които мъкнех по двайсетина 3½“ дискети на три паса през Ботевград за да си запиша Heroes II. Играел си е с e-lisp когато аз пишех mIRC скриптове. И въпреки това, не бе отракан джавар. На кода му липсваше джавешки минимализъм. Пишеше си повечето неща сам. Не ползваше Eclipse. Често му се подигравах за йерархиите от класове, които бяха тромави и неуверени. Но в коментарите си бе артист.
Трудно ми е да измъкна и един пример, без да прозвучи глупаво извън контекст. Ant скриптът му започваше с „Нека Йоке Арнбори да благослови този билд“. Навсякъде имаше кратички коментари, пропити със странното му чувство за хумор. „Things are starting to look precarious. Beware!“. Рядко бяха полезни, но беше огромен кеф да ги чета. Усещаше се, че кодът е писан от човек, а не генериран от машина. Можехте да добиете представа за него. Когато погледът ви минава през редовете Java, имате чувството че си беседвате с една странна, но любопитна личност. Беше изкуство. Отвскяде.
Сетих се за това, като четох това изключително въведение в Ruby. Казваше „може да ползвате коментарите, за да си припомните настроението, в което сте били“. Бисер. И то в текст за машина, улавяща звезди през дупка в тавана, и лепяща ги на главите на оковани маймуни. Дъвчещи тебешир.
Сериозно. Не бях поглеждал на коментарите така. Като начин артистът да остави своя почерк в произведението, без иначе да наруши студената му, механична функционалонст. И въпреки, че възгледите ми за изкуство са малко по-различни, мога да оценя това в цялата му красота. Можете да го видите и в кода на Perl. Отворете който и да е .c
файл и прочетете първите няколко реда. Наистина, щракнете на връзката, отворете архива и вижте коментарите. Кажете си дали ги одобрявате или не. И после се замислете хубаво в кой лагер се намирате. Този на скучните машинописци или в този на страстните програмисти.
Изпитвам голямо удовлетворение от работата с такъв код. Мотивира ме. Научавам много. Виждам че има хора, които не са сухи и огорчени занаятчии, гледащи работата и хобито си като досадно задължение, разпокъсващо пиенето, безразличието или противното им отношение към света. Виждам, че има хора, които си обичат занаята и го вършат със страст, със замах и най-вече, с удоволствие. И да, успяват да произведат нещо.
Но май се разсеях. Схващате. Коментарите могат да се ползват артистично. Забавно и приятно. Така че да радват програмиста отсреща. Да му правят деня по-добър. И да го тикат да бъде по-продуктивен.
Вече виждам как половин дузина скучни Java/PHP/C# програмисти се отправят към формата за коментиране с нещо доволно предвидимо. Спестете си го, моля. Не твърдя, че това ще работи в голям екип или във вашата организация. Запознат съм и с опасността на коментари от рода на # R.I.P.L.V.B.
. Вероятно отвъд отворения код, ще работи само в малък екип от добри приятели, където всеки вярва на и уважава другия. Да, това го има в реалния свят, макар и да е рядкост.
И да, кодът може да бъде изкуство. Дори благодарение на коментарите.
Хах, няма нужда да си търся прашасалото издание на Властелина. Ще си го припомням от разни .c файлове.
Много са забавни подобен род разсейки. Смях се от сърце на „Flush the buffer… or buff the flusher?“ – нейде из кода на CI.
Пардон, исках да кажа „подобен род изкуство“.
You mean http://poignantguide.net
Понеже пиша предимно на python, обикновенно друго освен някоя псувня на особено грозните части, не оставям. Е, понякога пиша някоя функция, която е прекалено вдъхновена от Scheme, и тогава си оставям един коментар, че съм гении, но общо взето пиша повече код от колкото коментари. Сега обаче, както седнах да уча С, май ще ми се наложи да си създам навик да коментирам кода си.