Я теряю поток моего веб-приложения на PHP, с ним становится трудно работать

14

Я программировал несколько лет и со временем стал очень хорошо знаком с C # и JavaScript. У меня есть несколько больших проектов на C # и JavaScript, по которым я без проблем ориентируюсь. Недавно я начал проект PHP & AngularJS для работы без предварительного опыта работы с PHP.

Поток стороны PHP становится все труднее отслеживать (сторона JavaScript больше, но с ней легко работать), когда я пытаюсь обдумать это, я представляю себе запутанный клубок ниток. Основные ошибки дизайна, которые я допустил, когда начинали, начинают накапливаться и влияют на мой дизайн в будущем. Реализация чего-либо нового занимает все больше и больше времени.

У меня сжатые сроки, и мне все труднее писать хороший, СУХОЙ, ТВЕРДЫЙ код. С течением времени разработки становится все более привлекательным копировать / вставлять куски кода, чтобы вносить небольшие изменения в его поведение. Также требуется много времени, чтобы вернуться в базу кода, когда мне нужно сделать переключение контекста (из одного проекта, затем обратно в этот), я испытываю страх, когда возвращаюсь к работе над этим проектом.

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

Дуглас Гаскелл
источник
1
Спасибо @gnat. Тем не менее, я менее заинтересован в том, чтобы обосновать дело моего босса, чем выясняю, как на самом деле решить проблемы самостоятельно. Обращение к моему начальнику не принесет пользы, если я не знаю хорошего методического способа выявления и изменения проблем.
Дуглас Гаскелл

Ответы:

11

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

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

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

Если вы пойдете по пути очистки, поймите, что это не означает «тратить больше времени на дизайн». Это о том, чтобы избавиться от ленивых привычек и вынести мусор.

Выбрасывать грязный код оптом - плохая идея. Не из-за проделанной работы, а из-за того, что рабочий код воплощает идею. Переместите идею в чистый код перед тем, как выбросить грязный код.

Использование модульных тестов помогает в этом, но если вы создали свои тесты с той же тщательностью, что и вы, то, вероятно, нуждаетесь в исправлении.

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

candied_orange
источник
1
«Никто не собирается поймать вас на беспорядок и вывести из себя». ... Если вы не делаете обзор кода. ;)
jpmc26
1
@ jpmc26 Если вы думаете, что обзоры кода спасут вас от этой судьбы, вы ошибаетесь. Обзоры кода помогут вам только тогда, когда вы захотите учиться у других. Не тогда, когда вы сосредоточены на крайнем сроке. Работающий, грязный кодекс будет снова и снова превосходить мнения. Я видел, как менеджеры разрешают эти споры, переворачивая четверть. Если вас не волнует качество, никто не сможет вытащить его из вас. Не думайте, что вы можете положиться на других, чтобы удержать вас от беспорядка. Если это произойдет, они просто назначат вас для обновления документации.
Candied_Orange
Если вы прочитали мой комментарий и подумали, что я говорю, что обзоры кода - это волшебство, похожее на единорогов и радугу, которые исправят все без каких-либо усилий или желания, вы невероятно ошибаетесь. Но они дают кому-то шанс позвать тебя на это.
jpmc26
1
@ jpmc26 Если вы прочитали мой ответ и подумали, что я говорю, что нет надежды, просто сдавайтесь, вы невероятно ошибаетесь. Я призываю программистов взять на себя личную ответственность за чистый код, а не полагаться на какой-либо процесс, чтобы это произошло. Только одно имеет значение. Вы либо заботитесь, либо нет.
Candied_Orange
Конечно, но даже самый лучший программист будет время от времени принимать глупые решения. Проверка кода с другим человеком дает вам возможность поставить свой код перед кем-то, кто может поймать их раньше. Вот и весь смысл . Это трудно увидеть проблемные места от себя , пока вы на самом деле не пытаться изменить что - то и становится трудно. Конечно, обзоры кода и любая другая техника бесполезны, если вам все равно.
jpmc26
9

Реализация чего-либо нового занимает все больше и больше времени.

Это ваше оправдание. Признайтесь, съешьте немного вороны и объясните, почему дела идут дольше, и что вам нужно потратить немного времени на рефакторинг + модернизацию системы.

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

Глупый ответ на вопрос «Как мне провести рефакторинг огромного проекта?» есть, «Одна часть за один раз».

РЕДАКТИРОВАТЬ

Читал похожие посты и наткнулся на этот пост в блоге: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : не пытайтесь создать огромную фазу рефакторинга в вашем проекте; маловероятно, что вы получите бай-ин от владельцев проекта, и вы не будете руководствоваться при выборе того, что делать в течение всего времени, которое у вас есть. Вместо этого уделите время каждому новому изменению или исправлению ошибки, чтобы лишить вас кода, с которым вы сейчас работаете. Не позволяйте запахам держаться, когда у вас есть возможность их исправить.

Джен
источник
3
Это именно то, что я сделал с моим наследием в прошлом. Хорошая вещь: как только вы получили поворотный момент, проект начинает светиться как в волшебной пыли.
qwerty_so
-2

Sonarqube поддерживает PHP, так что вы можете помочь отслеживать ваш текущий долг и новые утечки. http://docs.sonarqube.org/display/PLUG/PHP+Plugin

Живой пример с Drupal https://sonarqube.com/dashboard?id=drupal

Архимед Траяно
источник
1
К сожалению, я не могу установить JVM на свое рабочее устройство. В противном случае это выглядит как отличный инструмент.
Дуглас Гаскелл
Это довольно драконично для рабочей станции разработчика.
Архимед Траяно
У меня нет локального администратора или каких-либо разрешений на установку или разрешений на запуск для любых приложений, не включенных в белый список. Раньше было намного хуже .... к сожалению.
Дуглас Гаскелл
Не могу сказать, что сочувствую, я все же сочувствую.
Архимед Траяно
Это просто реклама / ссылка на инструмент, а не ответ на вопрос ОП.
Джеймс Снелл