Venho programando há alguns anos e me familiarizei muito com C # e JavaScript ao longo do tempo. Eu tenho alguns projetos C # e JavaScript maiores que não tenho problemas para navegar. Recentemente, iniciei um projeto PHP e AngularJS para trabalhar sem experiência anterior com PHP.
O fluxo do lado PHP das coisas está se tornando difícil de acompanhar (o lado JavaScript é maior, mas fácil de trabalhar), quando tento pensar nisso, imagino uma bola de fios emaranhada. Os principais erros de design que cometi quando comecei estão começando a se acumular e afetar meu design daqui para frente. Leva mais e mais tempo para implementar algo novo.
Estou com um prazo apertado e cada vez mais difícil escrever código bom, SECO, SÓLIDO. Está se tornando mais atraente copiar / colar pedaços de código para fazer pequenas variações em seu comportamento à medida que o tempo de design aumenta. Também está demorando muito tempo para voltar à base de código sempre que preciso fazer uma troca de contexto (de um projeto e depois para este), sinto pavor sempre que volto a trabalhar nesse projeto.
Que medidas posso tomar para remediar isso? O tempo extra que pode levar também precisa ser justificável, meu chefe não é desenvolvedor e não está familiarizado com os ciclos de vida de desenvolvimento ou software, portanto, explicar pode ser mais difícil do que o normal.
fonte
Respostas:
Você está assumindo dívidas técnicas. Quanto mais você justificar código desleixado com prazos, mais prazos o conseguirão cada vez menos.
Entenda que você pode se safar completamente disso. Ninguém vai te pegar fazendo bagunça e te dar uma bola. Você só vai acordar um dia cercado de lixo.
Nesse momento, você atualiza seu currículo e o torna meu problema ou decide pagar a dívida e gastar algum tempo limpando o código.
Se você seguir a rotina de limpeza, entenda que não se trata de "gastar mais tempo com o design". Trata-se de quebrar alguns hábitos preguiçosos e retirar o lixo.
Jogar fora o código sujo por atacado é uma má idéia. Não por causa do trabalho realizado, mas porque o código de trabalho captura uma ideia. Mova a ideia para um código limpo antes de descartar o código sujo.
Ter testes de unidade ajuda com isso, mas se você os criou com o mesmo cuidado que colocou na bagunça, é provável que também precisem ser consertados.
Não ceda à rigidez. Se você não pode alterá-lo, não é um software.
fonte
Esta é a sua justificativa. confesse, coma um pouco de corvo e explique por que as coisas estão demorando mais e que você precisa gastar um pouco de tempo refatorando + reprojetando o sistema.
Se você não fizer isso, precisará refatorar pouco a pouco, no nível mais baixo. As tarefas já estão demorando mais do que você deseja - dedique um tempo extra toda vez que você tocar na base de código para tentar melhorar algo. Adicione um teste de integração. Extraia uma abstração.
A resposta estúpida de "Como refatorar um projeto enorme?" é "uma peça de cada vez".
EDITAR
Estava lendo posts relacionados e me deparei com este post do blog: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : não tente criar uma grande 'fase' de refatoração em seu projeto; é improvável que haja adesão dos proprietários do projeto, e você não estará orientado em suas escolhas sobre o que enfrentar durante o tempo que tiver. Em vez disso, reserve um tempo para cada nova alteração ou correção de bug para eliminar o código com o qual você está trabalhando no momento. Não permita que os odores permaneçam quando tiver a oportunidade de corrigi-los.
fonte
O Sonarqube suporta PHP para que você possa ajudar a rastrear sua dívida atual e novos vazamentos. http://docs.sonarqube.org/display/PLUG/PHP+Plugin
Amostra ao vivo com Drupal https://sonarqube.com/dashboard?id=drupal
fonte