Como você decide quais partes do código deve ser consolidada / reformulado em seguida?

StackOverflow https://stackoverflow.com/questions/743451

  •  09-09-2019
  •  | 
  •  

Pergunta

Você usa algum métricas para tomar uma decisão que partes do código (classes, módulos, bibliotecas) serão consolidadas ou reformulado em seguida?

Foi útil?

Solução

Não uso nenhum métricas que podem ser calculados automaticamente.

Eu uso código cheira e heurísticas semelhantes para detectar código ruim, e então eu vou corrigi-lo assim que eu tenha notado. Eu não tenho qualquer lista de verificação para procurar problemas - principalmente é um pressentimento que "esta aparência código confuso" e, em seguida, raciocinando que por isso é confuso e descobrir uma solução. refatorações simples como dar um nome mais descritivo para uma variável ou extrair um método demora apenas alguns segundos. refatorações mais intensivos, como a extração de uma classe, pode levar até um uma ou duas horas (caso em que eu poderia deixar um comentário TODO e refatorar-lo mais tarde).

Uma heurística importante que eu uso é responsabilidade única Princípio . Faz as classes bem coesa. Em alguns casos, eu uso o tamanho da classe em linhas de código como uma heurística para olhar com mais cuidado, se uma classe tem múltiplas responsabilidades. Na minha projeto atual tenho notado que ao escrever Java, a maioria das aulas serão menos de 100 linhas muito tempo, e muitas vezes, quando o tamanho se aproxima de 200 linhas, a classe faz muitas coisas não relacionadas e é possível dividi-la, de modo a obter mais focado aulas coesos.

Outras dicas

Cada vez que eu preciso para adicionar novas funcionalidades que procuro para o código que faz algo semelhante já existente. Uma vez que eu encontrar esse código penso refatoração-lo para resolver tanto a tarefa original e o novo. Certamente eu não decidir refatorar cada vez -. Na maioria das vezes eu reutilizar o código, pois é

Eu geralmente só refactor "on-demand", ou seja, se eu ver um concreto, problema imediato com o código.

Muitas vezes, quando eu preciso para implementar um novo recurso ou corrigir um bug, eu acho que a estrutura atual do código torna isso difícil, tais como:

  • também muitos lugares para mudar por causa de copiar e colar
  • estruturas de dados inadequados
  • coisas codificado que precisam mudar
  • métodos / classes grandes demais para entender

Então eu refatorar.

Às vezes, vejo código que parece problemático e que eu gostaria de mudar, mas eu resisto ao impulso se a área atualmente não está sendo trabalhado.

Eu vejo refatoração como um equilíbrio entre à prova de futuro o código e fazer as coisas que realmente não geram qualquer valor imediato. Portanto, eu normalmente não refatorar a menos que eu veja uma necessidade concreta.

Eu gostaria de ouvir sobre as experiências de pessoas que refatorar como uma questão de rotina. Como você parar de polimento tanto que você perder tempo para características importantes?

Cyclomatic_complexity para identificar o código que precisa ser reformulado seguinte.

I usar o Monitor Fonte e métodos rotineiramente refactor quando a métrica complexidade vai aboove cerca de 8,0.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top