Про елегантний і бидлокод (нагадування самому собі)
Приємно писати елегантний код — код, який виконує те, шо має виконувати, який є ефективним, логічним, зрозумілим, чистим, читабельним. Коли він робить тільки те, що треба, і не робить того, чого не треба. Коли там є все необхідне і нічого зайвого. Пишеш такий код, дивишся на нього, і просто отримуєш естетичне задоволення.
Неприємно писати бидлокод. Коли пишеш бидлокод, гризе совість.
Щоб писати елегантний, а не бидлокод, треба просто перед тим, як кодити щось, сісти і трошки подумати. Продумати всякі аспекти, шо має бути, чого не має бути, шо і як має працювати, як краще реалізувати ту чи іншу штуку. Намалювати щось. Тоді в голові з’являється ясність, і ти пишеш шось нормальне. А якщо думати про все по ходу написання програми, переважно виходить туфта. Чому — бо ти спершу думаєш тільки про щось одне, і не думаєш про те, що треба буде писати далі. А коли доходиш до наступного кроку, виявляється, що попередні штуки ти написав не зовсім так, як треба. І щоб не переписувати, ти починаєш бидлокодити, вставляти якісь костилі і тд.
Крім того, на те, шоб подумати над програмою і вже потім писати її переважно треба менше часу, ніж коли пишеш «сходу». Коли пишеш «сходу», доводиться тратити багато часу на думання, як вирішити ті проблеми, які ти вже заклав у своїй програмі.
Можна написати щось елегантне і без продумування, але хіба шось просте і невелике. А над якоюсь трохи складнішою програмою обов’язково треба подумати.
І головне, коли ти елегантно щось написав, дуже просто додавати туди нові елегантні шматки коду. Елегантне ядро програми — це так важливо. А коли набидлокодити щось, то чим більше туди дописувати, тим більшим бидлокодом воно буде. Зрештою програма перетвориться у шось страшне, громіздке, шось таке, на шо буде боляче дивитись. А коли бачиш елегантний код, його хочеться обійняти.
Важливо це зрозуміти, поки я ше тільки студент і не пишу серйозних, важких і великих проектів. Не працюю в команді. І тд.
Ше раз: треба не просто кодити, а спершу подумати, а тоді кодити.