Pergunta

Eu estou tentando dizer a alguém o seu código não é "coerente" no sentido de que serve múltiplas finalidades. Eu não acho que eu posso explicar isso muito bem, então eu estou procurando uma referência boa e / ou definição.

Foi útil?

Solução

Eu acho que o termo correto é coesão .

Na programação de computadores, coesão é uma medida de quão relacionados com o forte e focado as diversas responsabilidades de um módulo de software são. Coesão é um tipo ordinal de medição e é geralmente expressa como "alta coesão" ou "baixa coesão" quando está a ser discutido.

Módulos com alta coesão tendem a ser preferível porque alta coesão está associada com várias características desejáveis ??de software, incluindo a robustez, a fiabilidade, a capacidade de reutilização, e a compreensibilidade enquanto a baixa coesão está associada com características indesejáveis, tais como a dificuldade de manutenção, difícil de teste, difícil de reutilizar, e até mesmo difícil de entender.

Outras dicas

Eu tive código completo por Steve McConnell ao lado do meu computador (ou seja, os programadores da Bíblia) com a página aberta coesão explicando assim que eu pensei que iria partilhar,

Coesão surgiu de projeto estruturado e é geralmente discutido na mesma contexto como acoplamento. refere-se a coesão à forma como perto todas as rotinas em um classe ou todo o código em uma rotina apoiar um propósito-how centro focado a classe é. As classes que contêm fortemente funcionalidade relacionada são descrito como tendo uma forte coesão, eo objetivo heurística é fazer coesão tão forte quanto possível.

Eu uso o termo “separação de interesses” para explicar isso enquanto refatoração. Muitas vezes, quando o código é relativamente novo, as coisas vão ficar aglomeradas em conjunto, como as preocupações separadas não são claras no início.

Uma maneira fácil para ilustrar isso para o seu colega de trabalho seria a de pedir-lhes para escrever casos de teste para o código. Isso deve ilustrar que o código não é clara ou coerente.

Outra boa frase para uso é que as funções / objetos “deve fazer uma coisa, e fazê-lo bem”, isso tem implicações em tudo, desde os nomes objeto / método para a arquitetura geral do sistema.

Além das respostas dadas até agora, uma maneira simples de pensar em alta coesão é a falta de duplicação de funcionalidade e separação clara de funcionalidade relacionada em módulos distintos, componentes ou classes. Assim, se você quer uma função semelhante para outra função, e você cortar e colar e, posteriormente, modificar uma cópia do código, você está reduzindo a coesão. Se você modificar o original para lidar com o novo caso, onde o novo caso está claramente relacionada com a funcionalidade existente, você está aumentando a coesão. Dito de outra forma, se o seu programa tem que fazer uma determinada coisa, não importa quão vezes ou em quantos lugares, para o máximo de coesão deve haver apenas uma vez pedaço de código que faz essa coisa. Ao mesmo tempo, uma classe dada, módulo ou componente deve ter uma única área de responsabilidade. Misturar funcionalidade não relacionados numa única classe ou componente também reduz a coesão.

Como CodeWiki diz, a coesão é tipicamente discutido com acoplamento, onde os dois podem agir em oposição um ao outro, especialmente quando as interfaces rigorosas não forem cuidadosamente planejado. Muitos dos artigos pesquisei sobre a coesão relacionam ao design OO, mas a coesão e acoplamento não se restringem a OO.

Marcado por uma relação ordenada, lógica e esteticamente consistente de peças; "Um argumento coerente" - de http://www.websters-online-dictionary.org / definição / coerente

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