Повторное использование, перепишите или осуществите рефакторинг?

На работе я наследовал разработку основанного на PHP веб-сайта после консультанта, который первоначально произвел вырученный и левый без трассировки. Буквально половина кода разорвана из учебных руководств онлайн, и существуют тысячи строк хлама, которые, будучи неполными, делают драгоценный мало. Едва любой из него на самом деле работает. Я пытался вытащить применимые компоненты, такие как расположение (умно смешанный с кодом), управление сеансами (изящно закаленный незавершенными, непроверенными SQL-запросами), и несколько других вещей, но очень трудно вызвать весь этот спам в место. Далее, я не говорю идиоматический PHP, будучи большим количеством пользователя Perl, и я, как предполагается, нахожусь на этом проекте преимущественно для обслуживания, так перезаписи, все кажется, что взяло бы пока борьба существующего монстра назад в место.

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

  • // WHY IS THIS NOT WORKING
  • // I know this is bad but were going for working stuff right now...
  • // This is a PHP code outputing Javascript code outputting HTML...do not go further
  • // Not userful

Я ищу лучший совет, который я могу получить здесь. Что Вы сделали бы, если бы Вы были в моем положении?

Править: Спасибо, все, для Вашего быстрого и полезного совета!

15
задан Jon Purdy 14 April 2010 в 19:44
поделиться

7 ответов

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

Пусть ваш менеджер сделает свою работу - рассчитает рентабельность инвестиций в замещающий проект - и примет решение.

19
ответ дан 1 December 2019 в 01:53
поделиться

Думаю, как вы слишком хорошо знаете, здесь нет простого ответа. Работа с устаревшим кодом - одна из самых неприятных вещей в нашей отрасли, но из нас приходится иметь дело слишком часто. Что я бы порекомендовал, прежде чем идти дальше, так это убедиться, что вы понимаете точный масштаб проекта, разбив его на обязательные и желательные. Затем вы можете сначала более внимательно сосредоточиться на наиболее важных областях. Что касается выбора повторного использования / рефакторинга / перезаписи и т. Д., То это действительно будет зависеть от того, насколько плох код в первую очередь и каким должно быть будущее кода.

0
ответ дан 1 December 2019 в 01:53
поделиться

Все время от времени наследуют плохой код.

То, что у вас здесь, является довольно классическим примером того, что я видел в прошлом (на самом деле я видел и похуже). Хотя я могу понять желание переписать (и действительно, если ВСЕ код настолько плох, вам следует серьезно отнестись к этому варианту), ваш менеджер может не пойти на это, или, по крайней мере, не сразу.

В любом случае, вы будете иметь дело с этим некоторое время. Я бы вычистил столько, сколько вы могли, или - если это касается клиентов - решил бы проблемы безопасности. Если код настолько плох, насколько я мог предположить из того, что вы опубликовали, он, вероятно, завален такими лакомствами, как SQL-инъекция, а также небольшое количество CSRF и XSS. Таким образом, если вы используете его для чего-то, что должно быть защищено, вы можете убедительно «улучшить» его.

3
ответ дан 1 December 2019 в 01:53
поделиться

На самом деле это зависит от размера и объема того, на что вы смотрите.

Что касается вашего сценария, в частности, если работа проста, но код поврежден, вы, вероятно, сэкономите уйму времени, просто переписав его. Вы не унаследуете какой-либо устаревший мусор или неудачный выбор дизайна. Что касается веб-сайтов, существует множество фреймворков и / или решений с открытым исходным кодом, на которые вы можете просто сопоставить существующий сайт без значительных усилий.

Глядя на приведенный выше пример кода, похоже, что стоит также отправить фрагмент кода на thedailywtf.com. ;)

5
ответ дан 1 December 2019 в 01:53
поделиться

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

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

1
ответ дан 1 December 2019 в 01:53
поделиться

Объясните клиенту, что предыдущий консультант, возможно, был не в своей тарелке. Код не поддается управлению и должен быть переписан. Если вы хотите распутать этот клубок, то объясните, что стоимость будет больше, чем переписывание с нуля. Мне уже приходилось это делать. В большинстве случаев проще переписать".

2
ответ дан 1 December 2019 в 01:53
поделиться

Я не поклонник рефакторинга ради рефакторинга, поскольку работаю в зрелой, унаследованной среде. Важнее видеть "что изменилось" в истории исходников, чем видеть красивый код. Большинство наших изменений связаны с отчетами об ошибках или утвержденными "запросами на изменение" с формальными требованиями. Но здесь я говорю о коде, который в принципе работает, а ваш - нет. Так что в вашем случае, когда речь идет о коде, который в настоящее время не соответствует требованиям (ЛЮБЫМ требованиям, прошлым или настоящим), я бы сказал - идите и переписывайте.

2
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: