LINUX.ORG.RU

Как поддерживать много кода низкого качества?

 , ,


1

2

Накидайте ссылок или ткните носом в известные вам материалы по сабжу.

Дано: большой проект на поддержке и 1 разработчик.

Сам проект характеризуется следующими пунктами:

  • лапшеподобная архитектура
  • много копипаста
  • god objects
  • куча рафинированных сущностей
  • куча зависимостей - всё зависит от всего
  • и прочие анти-паттерны

одним словом, какашка.

Трудозатраты на создание аналога (если переписывать с нуля) - 10 человеко-лет. Бюджета на это нет.

Стоит задача - добавлять новые фичи и фиксить баги. Вопрос - как делать это с наименьшей попа-болью?

На рефакторинг, конечно же, руководство добра не даёт.



Последнее исправление: mono (всего исправлений: 1)

Добавляешь новую фичу — рефакторишь только ту часть, которая мешает это сделать, а не весь проект. Если начальство возникает, говоришь что иначе нельзя. Если тебе как специалисту не верят, то увольняйся нафиг.

vurdalak ★★★★★
()

Если нет возможности переписывать хотя бы частями, то ничего кроме как плакать и «добавлять новые фичи и фиксить баги» не остается.

NegatiV
()

Накидайте ссылок или ткните носом в известные вам материалы по сабжу.

http://hh.ru/

Такая работа не нужна. Ищи другую. Если руководство хочет такое - они идиоты. Это не лечится, поэтому других вариантов нет.

anonymous
()

Ты не сможешь, найми индуса или бывшего пхпшника.

anonymous
()
Ответ на: комментарий от Goury

валить или нет - не об этом тред.

интересны в первую очередь авторитетные материалы по сабжу «поддержка неподдерживаемого кода».

cccian
() автор топика

На рефакторинг, конечно же, руководство добра не даёт.

Совсем-совсем не дает? В каком виде ты преподнес начальству необходимость рефакторинга?

Стоит задача - добавлять новые фичи и фиксить баги. Вопрос - как делать это с наименьшей попа-болью?

Покрывать код тестами, параллельно переписывая.

anonymous
()

Продолжать плодить все перечисленное тобой.

robot12 ★★★★★
()
Ответ на: комментарий от cccian

Нет никаких материалов. Если бы неподдерживаемый код можно было поддерживать, то в мире не было бы проблем, а программисты были бы такими же квалифицированными, как и грузчики в продуктовом магазине.

Goury ★★★★★
()
Ответ на: комментарий от cccian

вы о тестах только из теории знаете, да?

Большую часть рабочего времени пишу тесты. А как вы пришли к такому выводу?

anonymous
()
Ответ на: комментарий от cccian

А ты очередной непризнанный гений?

anonymous
()

добавлять новые фичи и фиксить баги

Совсем новые фичи или доработка/переделка старых?

Если второе то можно походу еще рефакторить понемногу.

Также можно рефакторить вместе с исправлением багов.

Добавляешь новую фичу — рефакторишь только ту часть, которая мешает это сделать, а не весь проект. Если начальство возникает, говоришь что иначе нельзя. Если тебе как специалисту не верят, то увольняйся нафиг.

Это даже не нужно обсуждать с начальством. Для начальства это просто фича, для разработчика это переписывание текущего кода + новый код, об этом знает только разработчик. Или они все диффы/коммиты смотрят?

Hope ★★
()

Refactoring: Improving the Design of Existing Code

Solace ★★
()
Ответ на: комментарий от vurdalak

Добавляешь новую фичу — рефакторишь только ту часть, которая мешает это сделать, а не весь проект. Если начальство возникает, говоришь что иначе нельзя. Если тебе как специалисту не верят, то увольняйся нафиг.

</thread>

Corey
()

Грохни репозитарии и беги оттуда.

hateyoufeel ★★★★★
()

Рефакторинг такой кучи это как вкалывание на рудниках ради светлого будущего, особенно ССЗБ будешь, если будешь это делать втихаря от руководства. Посему, чтобы не было попаболи, квикхаки, живи сегодняшним днем, надоест - сваливай.

goingUp ★★★★★
()

Стоит задача - добавлять новые фичи и фиксить баги. Вопрос - как делать это с наименьшей попа-болью?

Покрывать продукт тестами

umren ★★★★★
()
Ответ на: комментарий от goingUp

Но попаболь неизбежна, сейчас в похожей ситуации, проект вгоняет меня в депрессию. Как можно так жить и такое писать? Если написание с нуля займет 10 лет, рефакторинг займет не особо меньше. Уже решил свалить.

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Уже решил свалить.

Так можно рефлекс наработать, что при виде говнокода в любой конторе будешь валить. Мне сейчас тоже свалился жуткий легаси от 4х подрядчиков подряд где сам черт ногу сломит, но ничего, главное по чучуть переписывать те фичи, к которые доп фичи надо запилить и живется вполне.

umren ★★★★★
()
Ответ на: комментарий от anonymous

Если руководство хочет такое - они идиоты.

Ты не понял, руководством там обычное, есть продукт, компания видимо не особо серьезная, либо сам продукт не имеет огромной серьезности для компании что бы с ним заморачиватся

umren ★★★★★
()

Трудозатраты на создание аналога (если переписывать с нуля) - 10 человеко-лет. Бюджета на это нет.
Стоит задача - добавлять новые фичи и фиксить баги. Вопрос - как делать это с наименьшей попа-болью?

Рефакторинг сильно время исправления косяков не сократит. Покрытие тестами ситуацию поправит, но это даже не всегда осуществить реально. Добавляй фичи и секторами исправляй то, что есть.
Но без понимания руководства не выйдет, ты будешь проседать по срокам.

Solace ★★
()
Ответ на: комментарий от cccian

заплатит за их доработку

Ну так и пусть платит.
Нанимай отдел разработки и десять человеколет прекрасно вырабатываются за месяц пятью сотнями высококласных спецов. Цена вопроса $2.5m

Goury ★★★★★
()

Создавай видимость конструктивной работы, видимость добавления фич. , Сделай всего-лишь заглушку вместо фичи. Например, после озвучивания заказчиком новой фичи до реального её использования может пройти пару лет, а то и вообще бесконечность (т.е. никогда), за это время ты получишь неплохие деньги от конторы. Тяни сроки, делай фейковые демонстрации. Заведи багтрекер, регулярно сливай туда всякой воды и показывай начальству. Налепи «документации для пользователя» со скриншотами, освой паверпоинт с анимацией.

Еще неплохо бы починить взаправду пару багов, перед этим создав иллюзию у начальства о сверхзначимости этих багов; но это уже почти 80lvl.

Далее, в тактическом отступлении тебе помогут: жара/поломка кондея в серверной, деструктивные вирусы, смерть заказчика. Импровизируй. Ты пришел в эту контору за деньгами - возьми их!

Deleted
()
Последнее исправление: Deleted (всего исправлений: 3)

брось его в воду на 30 минут, добавь туда соду (ложку соды на литр воды)...

odii
()

Трудозатраты на создание аналога (если переписывать с нуля) - 10 человеко-лет

Т.е. оригинал кто-то писал в течение 10 лет? Фигасе...

Вопрос - как делать это с наименьшей попа-болью?

Отказаться.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от ya-betmen

Я сомневаюсь, что 10 человек могли бы за 1 год родить парашекод. Они бы на разгребание чужого говна потратили больше!

Хотя, с другой стороны, есть мелкомягкие, а у них как-то получается командами рождать быдлокод...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от umren

Такой план был у меня пару месяцев назад. Но в моем случае отрефакторить все не реально, а работа с говнокодом требует слишком много рутинных операций, что угнетает.

goingUp ★★★★★
()
Ответ на: комментарий от Eddy_Em

Они бы на разгребание чужого говна потратили больше!

В таких случаях не разгребают а просто зовут того кто писал. Как результат в одном файле 10 кусков различного функционала. Получается как в письме Дяди Фёдора родителям.

ya-betmen ★★★★★
()

Его не надо поддерживать. Его нужно сжечь. /thread

nanoolinux ★★★★
()

К всему что тут добавлено: еще больше тестов, защитное программирование, постоянный поиск инвариантов и их выделение в отдельные подсистемы.

outtaspace ★★★
()
Ответ на: комментарий от cccian

Если не секрет, как давно ты с этим проектом работаешь? Просто из своего опыта - то, что сегодня кажется ужасным, огромным и неподдерживаемым монстром, месяцев через 6 становится вполне терпимым, а через год так и вовсе почти родным.

runtime ★★★★
()
Ответ на: комментарий от Goury

Нанимай отдел разработки и десять человеколет прекрасно вырабатываются за месяц пятью сотнями высококласных спецов

Почитай Брукса. Он подробно объясняет, почему этот подход не работает.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Этот подход прекрасно работает на отработку человеколет. У них же там особый волшебный код, который переписать можно только протиранием штанов.

Goury ★★★★★
()

одним словом, какашка

(если переписывать с нуля) - 10 человеко-лет

Ты понимаешь, что поделил на ноль?

Стоит задача - добавлять новые фичи и фиксить баги Вопрос - как делать это с наименьшей попа-болью?

Добавлять и фиксить. Если хочешь поумничать, иди в грузчики и философствуй сколько угодно.

no-such-file ★★★★★
()
Ответ на: комментарий от cccian

интересны в первую очередь авторитетные материалы по сабжу «поддержка неподдерживаемого кода»

Рефакторинг.

g0t0
()

Нужно кастануть бизуна. Судя по его топикам, он чем-то таким сейчас занят.

shrub ★★★★★
()

требуй от руководства нанять тестеров, минимум двух

чтоб каждый багфикс/новая фича проверялся ими на предмет регрессий, и свалить на них можно будет в случае чего

Harald ★★★★★
()
Ответ на: комментарий от g0t0

Истинные мастера говнокода не знают кто такой Брукс.

ya-betmen ★★★★★
()
Ответ на: комментарий от goingUp

Но в моем случае отрефакторить все не реально

а ты не рефакторь все, обычно «вся» система в плане фич и не используется и они концентирируются в какой-то среде

umren ★★★★★
()

10 человеко-лет

ты описал 99% проектов при таком человеко расходе. Один разраб ничего не сделает, так что пиши любой код не напрягайся. Заказчик убежал от тех кто это создал, по причине экономии денег. Соответственно результата два либо заказчик переёдет на другой софт, либо его заманают постоянные баги и он потратится по деньгам. В любом случае ты один ничего поменять не могёшь, так что не напрягайся, если будут делать крайним, увольняйся нафиг.

vtVitus ★★★★★
()

Как поддерживать много кода низкого качества?

Частыми бестолковыми багфиксами и бешеным релизенгом.

slackwarrior ★★★★★
()

Рефакторинг надо делать потихоньку, постепенно. Руководство об этом информировать только при необходимости.

hobbit ★★★★★
()
Ответ на: комментарий от cccian

ага, сердце радуется когда говно в конфету постепенно превращается

Vernat ★★
()

как делать это с наименьшей попа-болью?

месяца через 3-4 придет понимание. и смирение ))

Rastafarra ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.