Trabalho no meu projeto de hobby em C ++ há mais de 2 anos. Sempre que escrevo um módulo / função, codifico-o com muita reflexão. Agora veja o problema,
do {
--> write the code in module 'X' and test it
--> ... forget for sometime ...
--> revisit the same piece of code (due to some requirement)
--> feel that "This isn't written nicely; could have been better"
} while(true);
Aqui 'X'
está qualquer módulo (seja pequeno / grande / médio). Estou observando que isso acontece, não importa quanto esforço eu dediquei durante a codificação. Então, principalmente, eu me abstenho de ver um código funcional. :)
Este é um sentimento comum para muitas pessoas? Esse fenômeno é específico da linguagem? (Porque em C ++ é possível escrever a mesma coisa de maneiras diferentes).
O que devo fazer, se tiver esse sentimento de refatoração de um código de produção do mundo real, onde a alteração do código de trabalho não me renderá muitos elogios, mas poderá causar problemas se falhar.
c++
self-improvement
refactoring
coding
iammilind
fonte
fonte
Respostas:
Esse fenômeno é muito comum e não específico para programadores. Sempre que você executa uma tarefa intelectual, notará dezenas de lugares onde poderia ter melhorado - depois de se distanciar. Pergunte a qualquer homem sábio (wo-) que já escreveu uma tese, e eles vão dizer-lhe uma coisa: "Não olhe para ele Você vai encontrar um erro na primeira vista."
Existem basicamente duas coisas para evitar o loop de refatoração:
fonte
A refatoração contínua é o caminho a percorrer. Alterar o código de trabalho não causaria problemas e deve ser incentivado se feito corretamente. Se o seu código for totalmente testado em unidade, você pode redecorá-lo com confiança.
A única coisa que você pode prever sobre o código de produção do mundo real é: isso VAI mudar. Não tente adivinhar como isso mudará, quais novas técnicas você aprenderá amanhã. Em resumo, não tente tornar o seu código "perfeito". Apenas faça o melhor possível com o seu conhecimento atual. Além disso, verifique se o seu código é exaustivamente testado e extensível.
Passo 20 a 30% do meu tempo refatorando o código existente. Eu trabalho em uma empresa de tecnologia e a "gerência" nunca se queixou de alterar o código existente. No entanto, percebo que isso pode ser um problema em algumas empresas. Martin Fowler ainda tem uma seção sobre isso em seu livro de refatoração .
Em resumo, é um sentimento comum na minha experiência, mas não é negativo.
fonte
Todo módulo / função nasce e evolui em um mundo de prioridades. Uma vez que é suficiente para servir aos objetivos do mundo exterior, muitas vezes é deixado estagnar. É tudo, no final, andaimes em serviço para o propósito mais elevado. Sim, precisamos ser obsessivos com relação ao código, e sim, isso também pode nos fazer estagnar. Talvez seja uma boa jogada você desviar um pouco o foco do código em si e refletir mais sobre os processos que ocorrem dentro de você, o produtor do código.
fonte
Isso significa que você está expandindo seus conhecimentos e pontos de vista.
Se você não possui tarefas de maior prioridade, sempre retorne e aprimore seu código.
fonte
Sempre achei que uma pessoa faz uma aula de matemática para fortalecer suas habilidades na aula anterior. A álgebra parecia difícil, até você pegar a álgebra II; Então as habilidades que você aprendeu em Álgebra se tornaram úteis. É a mesma coisa em programação, escrita, trabalho em madeira ou qualquer outra coisa.
Ao fazer um curso de programação, você aprendeu sobre o If-then-else, o que fez muitas coisas até você aprender sobre os switches. Quando você está aprendendo algo novo, passa por essa progressão, todo mundo faz.
fonte
Sinto o mesmo sempre que leio a maioria dos códigos escritos por mim no passado. Isso é bom, significa que seu conhecimento e estilo de codificação melhoraram ao longo dos anos.
Quanto à alteração do código de produção, isso é um grande não-não, a menos que você tenha detectado erros óbvios. Não apenas porque pode ser uma perda de tempo, mas mais importante, já que a grande maioria dos bugs de software criados é do tipo que é introduzido quando são feitas alterações nos programas lançados. Estatisticamente, é provável que você introduza erros imprevistos. Se não estiver quebrado, não conserte.
fonte
Desenvolver um aplicativo significa melhorá-lo e torná-lo melhor; esse é um processo contínuo, portanto, enquanto você programa, você ganha mais experiência e conhecimento. Também significa que você está desenvolvendo também; portanto, quando você olhar para o código antigo, poderá descobrir que ele pode ser aprimorado.
Se você não tiver esse sentimento, significa uma de duas coisas:
fonte