Я программировал несколько лет и со временем стал очень хорошо знаком с C # и JavaScript. У меня есть несколько больших проектов на C # и JavaScript, по которым я без проблем ориентируюсь. Недавно я начал проект PHP & AngularJS для работы без предварительного опыта работы с PHP.
Поток стороны PHP становится все труднее отслеживать (сторона JavaScript больше, но с ней легко работать), когда я пытаюсь обдумать это, я представляю себе запутанный клубок ниток. Основные ошибки дизайна, которые я допустил, когда начинали, начинают накапливаться и влияют на мой дизайн в будущем. Реализация чего-либо нового занимает все больше и больше времени.
У меня сжатые сроки, и мне все труднее писать хороший, СУХОЙ, ТВЕРДЫЙ код. С течением времени разработки становится все более привлекательным копировать / вставлять куски кода, чтобы вносить небольшие изменения в его поведение. Также требуется много времени, чтобы вернуться в базу кода, когда мне нужно сделать переключение контекста (из одного проекта, затем обратно в этот), я испытываю страх, когда возвращаюсь к работе над этим проектом.
Какие шаги я могу предпринять, чтобы исправить это? Дополнительное время, которое может потребоваться, также должно быть оправданным, мой начальник не является разработчиком и не знаком с жизненными циклами разработки или программного обеспечения, поэтому объяснение может быть более сложным, чем обычно.
источник
Ответы:
Вы берете на себя технический долг. Чем больше вы оправдываете небрежный код с помощью сроков, тем больше сроков будет означать, что вы достигаете все меньше и меньше.
Поймите, что вы можете полностью сойти с рук. Никто не собирается поймать вас на беспорядок и вывести из себя. Ты просто проснешься однажды в окружении беспорядка.
В этот момент вы либо обновите свое резюме и сделаете его моей проблемой, либо решите погасить долг и потратить некоторое время на очистку кода.
Если вы пойдете по пути очистки, поймите, что это не означает «тратить больше времени на дизайн». Это о том, чтобы избавиться от ленивых привычек и вынести мусор.
Выбрасывать грязный код оптом - плохая идея. Не из-за проделанной работы, а из-за того, что рабочий код воплощает идею. Переместите идею в чистый код перед тем, как выбросить грязный код.
Использование модульных тестов помогает в этом, но если вы создали свои тесты с той же тщательностью, что и вы, то, вероятно, нуждаетесь в исправлении.
Не поддавайся жесткости. Если вы не можете изменить его, тогда это не программное обеспечение.
источник
Это ваше оправдание. Признайтесь, съешьте немного вороны и объясните, почему дела идут дольше, и что вам нужно потратить немного времени на рефакторинг + модернизацию системы.
Если вы этого не сделаете, вам нужно будет постепенно проводить рефакторинг, на низком уровне. Задачи уже занимают больше времени, чем вы хотите - каждый раз, когда вы прикасаетесь к основам кода, тратится немного больше времени, чтобы попытаться сделать что-то лучше. Добавьте интеграционный тест. Извлечь абстракцию.
Глупый ответ на вопрос «Как мне провести рефакторинг огромного проекта?» есть, «Одна часть за один раз».
РЕДАКТИРОВАТЬ
Читал похожие посты и наткнулся на этот пост в блоге: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : не пытайтесь создать огромную фазу рефакторинга в вашем проекте; маловероятно, что вы получите бай-ин от владельцев проекта, и вы не будете руководствоваться при выборе того, что делать в течение всего времени, которое у вас есть. Вместо этого уделите время каждому новому изменению или исправлению ошибки, чтобы лишить вас кода, с которым вы сейчас работаете. Не позволяйте запахам держаться, когда у вас есть возможность их исправить.
источник
Sonarqube поддерживает PHP, так что вы можете помочь отслеживать ваш текущий долг и новые утечки. http://docs.sonarqube.org/display/PLUG/PHP+Plugin
Живой пример с Drupal https://sonarqube.com/dashboard?id=drupal
источник