Explicando a refatoração [fechada]

Pergunta, questão

Minha pergunta é como você pode ensinar os métodos e a importância do código de organização e refatoração?

fundo

Recentemente, eu estava trabalhando em uma revisão de código para um colega. Eles haviam feito algumas modificações no trabalho de colegas há muito tempo. Durante as novas alterações, meu colega tentou refatorar itens, mas desistiu assim que ocorreu um acidente ou algum outro problema (em vez de perseguir o coelho pelo buraco para encontrar a raiz do problema) e reimplementar o código do problema. construído mais em cima disso. Isso deixou o código em um emaranhado de soluções alternativas e números mágicos, então me sentei com eles para refatorá-lo.

Tentei explicar como eu estava identificando os lugares que poderíamos refatorar e como cada refatoração pode frequentemente destacar novas áreas. Por exemplo, havia duas variáveis que armazenavam a mesma informação - por quê? Imaginei que era uma solução alternativa para um problema maior, então peguei uma variável e persegui o coelho pelo buraco, descobrindo outros problemas à medida que avançávamos. Isso acabou levando a encontrar um problema em que estávamos repetindo as mesmas coisas várias vezes. Isso se deveu, em grande parte, ao uso de matrizes de tamanhos de números mágicos que ofuscaram o que estava sendo feito - a correção do problema inicial de "dupla variável" levou a essa descoberta (e outras).

Enquanto eu fazia essa jornada de refatoração com minha colega, era evidente que ela nem sempre era capaz de entender por que fizemos algumas alterações e como podemos ter certeza de que a nova funcionalidade correspondia à original, então, dediquei um tempo para explicar e provar cada alteração, comparando com versões anteriores e percorrendo as alterações no papel. Também expliquei, através de exemplos, como saber se uma opção de refatoração era uma má idéia, quando escolher comentários em vez de alterações de código e como selecionar bons nomes de variáveis.

Eu senti que o processo de sentar juntos para fazer isso valeu a pena para mim (eu aprendi um pouco mais sobre a melhor forma de explicar as coisas para outras pessoas) e meu colega (eles entenderam mais nosso código e nossas práticas de codificação) mas, a experiência me levou a pensar se havia uma maneira melhor de ensinar o processo de refatoração.

...e finalmente...

Entendo que o que precisa ou não de refatoração e como refatorá-la são muito subjetivos, por isso quero me afastar dessa discussão, mas estou interessado em aprender como outras pessoas enfrentariam o desafio de ensinar essa importante habilidade e se outras aqui tiveram experiências semelhantes e o que aprenderam com elas (como professor ou aluno).

questionAnswers(9)

yourAnswerToTheQuestion