На Medium вийшов філософський блог про складнощі рефакторингу, розпач, пориви переписати «говнокод» з нуля та інші супутні труднощі, а також практичні поради, як привести кодову базу в порядок. Публікуємо переклад.
СТО та розробник вивчають застарілу кодову базу, щоб виправити помилку. Муки вже прагнуть нескінченності, вони готові здатися.
“Хто написав це лайно?”, — запитав технічний директор. Схвильований, він перевірив, хто цей мерзотник. Ним виявився він сам.
***
Познайомтеся із нашим героєм — Джейком. Він розробник, його щойно найняли на проект, якому вже шість років. Джейку дали завдання виправити помилку, для чого доведеться поринути у глибини застарілого коду. Він озброївся знаннями та контекстом та пірнув у кодову базу. Все має вирішуватись легко. Зрештою, це ж завдання для адаптації на проекті. Що може піти не так? (Звучить пекельний сміх).
Після перших двох годин Джейк вичерпав весь свій ентузіазм. Він загруз у павутинні розчарування, намагаючись розібратися у всіх змішаних ієрархіях — складніших, ніж королівське фамільне дерево в середньовічній Європі, довгих методах, які роблять багато різних речей, і іmplicits, захованих у темних кутах.
Він люто боровся з усім цим геніально нагромадженим сміттєзвалищем коду, але марно. Сумнів і тривога покрили його, як ранкова роса, чи це був піт? Той, хто це написав, геній чи просто мудак? Джейку зовсім не подобався цей код. Кодова база не відповідала його стилю коду.
Твоє обличчя, коли знаєш старий код
“Це жахливо. Потрібно переписати це негайно”, — вирішив Джейк.
Більшість розробників були там, де й Джейк. Вони відчували бажання переписати щось, що не відповідає їхнім уявленням про код. Все, що ви бачите в базі, це блюзнірство над чистим кодом. Вам не терпиться кинути ще один камінь у вже розбите вікно — ні для чого, просто на зло. Адже як взагалі можна адаптувати цей страшний стиль коду і внести виправлення?
Це нормально — почуватися таким чином. Але потрібно враховувати факт, що ви не знаєте контексту, чому розробник прийняв саме такі рішення. Постарайтеся зрозуміти, що ховається за мотивом, перш ніж суворо судити, вгамуйте своє его. Можливо, команда мала щільний графік, через який довелося зрізати шлях. Якщо це стартап, розробники могли залишити технічний борг, щоб закрити його пізніше, після гарячої фази роботи, коли терміново потрібно щось показати інвесторам для продовження проекту (це поширене явище).
Інша причина може полягати в тому, що команда розробки починала з простого, але наростаючі вимоги змусили їх наблизитися до чогось складнішого. І вона використовувала найпростіший на той момент підхід, оптимізований за вартістю та швидкістю. Можливо, розробники не використовували якусь надпопулярну технологію, тому що на той час вона була недостатньо стабільною, не було альтернатив.
Що ще може бути причиною? Чиясь самовпевненість і бажання зіпсувати настрій тому розробнику, який у майбутньому копатиметься в цьому коді? Як не сумно, не зарозумілість є загальною причиною «кульгавої» кодової бази. Розробники просто не знали виходу краще. Це ж не гріх. Кожен пише найкращий код, який може зараз, враховуючи всі обставини.
Зазвичай переписувати все з нуля дуже дорого та ризиковано. Можна отримати шанс усе переробити, написати за правилами, і тут же зазнати невдачі, бо витрачав багато часу не на те, що проекту справді потрібно.
«Я працював над проектом, який ми, розробники, вважали нестерпним через хаос у кодовій базі. Ми плакали, скаржилися та відмовлялися брати на себе відповідальність, просили повністю переписати систему. У кожній помилці ми звинувачували кодову базу, щільний графік, але не себе. Ми достукалися до керівників та отримали можливість все переписати. Я забув сказати вам, що це був стартап, який відчайдушно потребував інвестицій? Звичайно, на півдорозі стартап втратив імпульс для залучення інвестицій, і проект залишився без фінансування», — розповідає автор.
Ситуація у стартапі виглядала приблизно так
Звичайно, робота над кульгавою кодовою базою складна та стомлююча. Опиратися бажанню переписати те, що писали не ви — навичка, якою рідко володіє молодий розробник. Замість того, щоб зрозуміти проблему чи запит клієнта, ви хочете довести щось собі на кшталт «а я зробив би краще». Просто прийміть ситуацію: хоч би що ви робили, у кодовій базі завжди буде лайно.
Отже, що ви можете зробити для покращення ситуації?
Розробники на Reddit зізналися, що всі мали такі моменти, коли дивишся на свій код і розумієш — «ну єресь якась». Однак, коли його писали, він не здавався таким дивним і незрозумілим. А тепер навіть підказки, залишені собі майбутньому, не допомагають.
Вони почали активно ділитися історіями зі свого досвіду.
Швейцарська компанія з кібербезпеки Prodaft запустила ініціативу під назвою «Продай своє джерело», в рамках якої…
Презентовано JRuby 10 — останню версію реалізації мови програмування Ruby на основі JVM. Вона має…
Компанія Ілона Маска xAI презентувала новий онлайн-інструмент під назвою Grok Studio. Він призначений для редагування…
В освітній платформі «Мрія» планують впровадити генератор тестів на основі штучного інтелекту. Про це в…
OpenAI працює над власною X-подібною соціальною мережею, згідно з кількома джерелами, знайомими з цим питанням,…
Команда Unit 42 з Palo Alto Networks помітила чергову активність хакерської групи з КНДР, яка…