Developer's notes
33 subscribers
67 photos
4 videos
74 links
Пишу обо всём и ни о чём, могу и о программировании
Download Telegram
Спасибо копипасту

В программисткой среде известный метод “скопировать-и-вставить” с одной стороны считается чем-то, вроде, дурного тона – с другой стороны все так делают. Действительно: какой нормальный человек будет заново изобретать то, что он уже написал и работает если можно это скопировать и, вот тут самое главное – поправить и адаптировать – так что б это не выглядело копипастом. Ещё раз: речь не идёт про код в стиле макароны, индуский код, незнание SOLID и так далее – речь про то, что это рабочая методика где-то глубоко до открытия merge request и прохождения code-review. В наши дни многие уже умудряются писать код с помощью ChatGpt – на этом фоне про копипаст как нечто плохое и вовсе пора забыть...

Однако, я хотел вспомнить случай, когда копипаст мне помог решить задачу, сэкономив недели, а может быть месяцы ковыряния в спецификации. Дело было во времена моего участия в проекте из поста: пару месяцев уже прибывая там, я взял очередной баг, формулировка у него была что-то навроде: “flex layout не обрабатывает какой-то пограничный случай вот картинка как надо, вот что у нас” – дополнительная инфа от других разработчиков была – вот смотри тут в коде ссылка на спецификацию, ты почитай её. Ладно…звучит, как бага на пару строк кода, конечно, осталось найти куда эти строки вставить и сообразить, что там написать, ну в плохом варианте это неделя или две.

До того момента я про flex layout знал чуть меньше, чем ничего: HTML я глубоко не занимался, в Qt свои layouts, к тому же, мне никогда не нужно было их создавать – только использовать готовые, к слову, flex layout это совсем не QGridLayout. Глянув ещё раз пример, что должно быть и что было, глянув кратко спецификацию, я решил, что проще всего будет отдебажить, почему тут неправильно считается, это заняло дня 3: я нашёл, где поправить на пару строк и довольный открыл пулл реквест…Каково же было моё удивление узнать, что на самом деле, я должен был сделать не маленький фикс, а реализовать вот этот алгоритм из спецификации.

Тут мне взгруснулось…дело явно на месяц(ы), спецификация написана несколько пространным языком, не всё ясно как приземлять на то, что я имею уже в коде, конечно, это возможность стать “уникальным” специалистом по этой микро-нано области, но оно мне зачем? Очень быстро понял, что единственный рабочий вариант тут для меня – найти, где это уже реализовано, причём, понятно, что это должно быть реализовано. Нашёл исходной код проекта WebKit там довольно быстро нашёл именно этот алгоритм – тут дело уже пошло веселее: из WebKit можно было “перевести” в наш проект, надо было только учесть, что в WebKit всё аккуратно, размазано по своим классам, а у нас было свалено куда придётся, но это не важно. Был именно момент “copy-paste” , когда я скопировал кусок кода оттуда и потом просто адаптировал его, после чего уже успешно прошёл код-ревью и закрыл задачу…

#job #c_plus_plus #IT #web #HTML
🔥1