IT-ликбез

Что такое WTF-код?

и г****кодеры?
Фото: Anna Pustynnikova / shutterstock
Г****кодеры: кто это? Что они делают не так? Они пишут WTF-код. В частности, спагетти-код, лазанья-код и равиоли-код. Звучит вкусно, но в программировании любовь к этим «углеводам» – дурной тон и плохой стиль.
Что такое WTF-код?
В программировании существуют паттерны и антипаттерны. И то и другое – архитектурные конструкции, примеры решения задач, которые можно вписать в конкретную ситуацию. Только паттерны –удачные, а антипаттерны – вредоносные.

Паттерны – это шаблоны разумных и достаточных архитектурных решений. Строгое определение: «повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста». Паттерны в конкретном языке называются идиомами («как целесообразно действовать в разных ситуациях, когда вы пишете на данном языке»).

Антипаттерны – это ловушки, вредные конструкции в программах, «плохие идеи», «как делать не надо», плохой стиль программирования, источник проблем в будущем программного продукта.

Суть антипаттернов в том, что так часто делают, но так делать не надо, потому что работать может, но неэффективно и с последствиями. Код программного продукта нужно на старте писать так, чтобы с ним могли управляться и через время, причем уже другие разработчики.

Если код более-менее работает на пользовательской стороне, но монструозно сложен и бестолков на бэкенде, непонятен при чтении, создает массу сложностей в работе программы и тормозит дальнейшее развитие продукта – то это г****код. Чтобы не выражаться, можно говорить «WTF-код». Это один из критериев оценки кода: как часто при его чтении, Code Review, возникает вопрос «What the F*ck?!» («Это чего такое?», «Какого черта?», «Что тут вообще происходит?», «Почему это сделали так?»).

WTF-код (или г****код) подразумевает сочетание различных антипаттернов, плохой стиль программирования. Такой код не соответствует требованиям к современному софту. Программа должна быть надежной, гибкой, хорошо сконструированной. WTF-код к этому не приводит и тормозит дальнейшую разработку, а значит и развитие бизнеса.

Еще часто говорят «спагетти-код». Ну просто звучит красиво. Хотя это не совсем корректно, потому что «спагетти-код», или «макароны» – один из множества антипаттернов. Так называют спутанный, как вареные спагетти, код.
Карьеру с WTF-стилем программирования не сделать, классный продукт не написать и больших денег не заработать, поэтому важно в самом начале заложить добротный теоретико-практический фундамент.
Фото: KarepaStock / Shutterstock

Спагетти-код – это естественно для новичка, но предполагается, что нуб быстро учится и через время ужасается, глядя на свой WTF-код. Г****кодерами называют либо начинающих и пока мало умеющих программистов, либо тех, кто уже давно и задешево работает на рынке, мало знает о грамотном конструировании ПО, выработал плохой стиль, не развивается и не заморачивается на тему качества. Это такая история про скоростной фриланс за небольшие деньги.

WTF-код (WTFC, WTF Code) – общее сленговое понятие, отражающее длинный ряд проблем, которые могут присутствовать в исходном коде в разных проявлениях и комбинациях. В частности это: система с нераспознаваемой структурой; необязательная сложность; код без комментариев, написание с нуля вместо использования готовых решений, внесение изменений в систему контроля версий без проверки влияния на другие части программы, использование неподходящей в данном случае парадигмы программирования, просто какие-то суперстранные решения, и т. д.

Помните, мы недавно рассказывали про парадигму ООП, объектно-ориентированное программирование? Многие недолюбливают его из-за возможности создавать «лазанья-код». Есть такой антипаттерн, его еще иногда называют луком и пахлавой: там слишком много слоев уровней абстракции без всякой необходимости.

Продолжая гастрономическую тему: есть еще «пельмени», или «равиоли-код»: там все так склеено, что исправить почти невозможно. При этом с бизнесовой перспективы переписывать продукт с WTF-кодом с нуля чаще всего будет неудачным решением: слишком долго и дорого. Так что стиль программирования критически важен: если он плох, это как строить грандиозное здание ПО на болоте.
Фото: Anna Fedorova it / Shutterstock

Рассуждать в духе «главное, чтобы работало на пользовательской стороне» – естественно для пользователя, но не для программиста и не для бизнеса. Позиция «после нас хоть потоп» тоже не согласуется со стандартами разработки. С самого начала независимо от выбранного языка нужно учиться писать код грамотно, то есть развивать навык проектирования, изучать концепции, парадигмы, паттерны и антипаттерны программирования. Это Transferable Skills – навыки, которые вы будете по необходимости переносить из одного языка в другой, из проекта в проект.
Как научиться писать красивый, элегантный код?
Набирать опыт, читать литературу, смотреть образцы г****кода и правильные решения тех же задач. В Интернете есть сайты, где коллекционируют образцы WTF-кода, чтобы показывать, как делать не надо.

Одной из лучших прикладных книг по конструированию ПО, тактике и стилю программирования считается «Совершенный код. Мастер-класс» Стива Макконнелла. Даже опытные разработчики перечитывают ее время от времени. almamat blog
Almamat рассказывает, как стать QA-инженером