Estou perdendo o controle do fluxo do meu aplicativo Web PHP, está ficando difícil trabalhar com

14

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.

Douglas Gaskell
fonte
1
Thanks @gnat No entanto, estou menos interessado em defender meu chefe do que em descobrir como realmente resolver os problemas. Apresentar um caso ao meu chefe não servirá de nada se eu não souber uma boa maneira metódica de identificar e alterar questões.
Douglas Gaskell

Respostas:

11

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.

candied_orange
fonte
1
"Ninguém vai te pegar fazendo bagunça e te dar uma bola." ... A menos que você faça a revisão do código. ;)
jpmc26
1
@ jpmc26 Se você acha que as revisões de código o salvam desse destino, está enganado. As revisões de código ajudam apenas quando você deseja aprender com outras pessoas. Não quando você se concentra em um prazo. Código de trabalho, bagunçado, supera opiniões repetidas vezes. Eu já vi gerentes resolverem essas disputas lançando um quarto. Se você não se importa com a qualidade, ninguém será capaz de arrastá-la para fora de você. Não pense que pode confiar nos outros para impedir que você faça uma bagunça. Se for o caso, eles apenas o designam para atualizar a documentação.
Candied_orange #
Se você leu meu comentário e pensou que eu estava dizendo que as revisões de código são mágicas, como unicórnios e arco-íris, que corrigem tudo sem nenhum esforço ou disposição, você está incrivelmente enganado. Mas eles dão a alguém a chance de chamá-lo.
jpmc26
1
@ jpmc26 Se você leu minha resposta e pensou que eu estava dizendo que não havia esperança, desista, você está incrivelmente enganado. Estou convidando os programadores a assumirem responsabilidade pessoal pelo código limpo, em vez de depender de qualquer processo para que isso aconteça. Apenas uma coisa importa. Você se importa ou não.
candied_orange
Claro, mas mesmo o melhor programador tomará decisões idiotas de vez em quando. As análises de código com outra pessoa oferecem a você a chance de colocar seu código na frente de outra pessoa que possa obtê-lo mais cedo. Esse é o ponto . É difícil ver os pontos problemáticos por si mesmo até que você tente alterar algo e isso se torna difícil. É claro que as revisões de código e qualquer outra técnica são inúteis se você não se importa.
jpmc26
9

Leva mais e mais tempo para implementar algo novo.

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.

Jen
fonte
3
Foi exatamente o que fiz com minhas heranças no passado. O legal: quando você chega ao ponto de virada, o projeto começa a brilhar como pó de fada.
Qwerty_so
-2

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

Archimedes Trajano
fonte
1
Infelizmente, não consigo instalar a JVM no meu dispositivo de trabalho. Parece uma ótima ferramenta caso contrário.
Douglas Gaskell
Isso é bastante draconiano para uma estação de trabalho de desenvolvedor.
Archimedes Trajano
Não tenho administrador local, nenhuma permissão de instalação ou executo permissões para aplicativos não listados em branco. Costumava ser muito pior .... infelizmente.
Douglas Gaskell
Não posso dizer que simpatizo, mas sim sim.
Archimedes Trajano
com voto negativo, pois é apenas um anúncio / link para uma ferramenta, não uma resposta à pergunta do OP.
James Snell