Apesar de não ter tido muito tempo para contribuir para o crescimento do meu blog ultimamente, consigo ir-me mantendo actualizado relativamente ao que vai sendo "posted" por aí. Acabei de ler um post interessante do João Miranda sobre Code Smells (BTW, o livro do Martin Fowler é um "must").
A primeira vez que li alguma coisa sobre Code Smells foi quando li o Code Complete do Steve McConnell, que ainda hoje considero uma leitura indispensável para todos aqueles que estão envolvidos na construcção de software (BTW está para breve uma segunda edição) à semelhança dos multiplos volumes do Donald E. Knuth denominados "The Art of Computer Programming" uma referência em termos de engenharia de software.
Neste post o João sugere dois métodos fundamentais para determinar que um determinado método é demasiado longo. Eu gostaria de acrescentar um outro que me parece ainda mais importante: a complexidade ciclomática.
A complexidade ciclomátiva mede o número de caminhos distintos (linearmente independentes) de um determinado algoritmo medida em termos do número de instrucções decisionais adicionadas de um. Um algoritmo com uma complexidade ciclomática elevada deverá ser "refactored" (factorizado ?!?! Refactorizado ?! Refabricado ?!?!? Aceitam-se sugestões para a definição Portuguesa do termo... :-) ).
Uma complexidade ciclomática relativamente baixa contribui para que uma determinada função seja mais fácilmente compreensível e passível de ser modificada com menor risco. A complexidade ciclomática é também um bom indicador do quanto um programa ou função é testável.
Em baixo fica uma pequena tabela que categoriza a complexidade ciclomática de um algoritmo.
|
Complexidade Ciclomática |
Risco Estimado |
|
1-10 |
programa simples, com baixo risco |
|
11-20 |
mais complexo, risco moderado |
|
21-50 |
complexo, risco elevado |
|
maior que 50 |
programa não testável (risco muito elevado) |
Mais informação em: http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html
Posted
26-4-2004 17:47
por
José Almeida