CV, não estou preocupado. Só trocando idéia, experiência.
Do seu comentário, pude pensar em duas coisas:
- O importante mesmo é ter métodos curtos, ou seja bem definidos;
ou,
- se você tiver métodos curtos, acabará por ter apenas um ponto de saída.
Qual das duas coisas você quis dizer?
Paulo, acho até que o PMD é "bonzinho". Por padrão, ele só começa a reclamar depois que o método tiver mais de 100 linhas. E em 100 linhas é possível ter pelo menos uns 30 pontos de saída!!!
Um código aqui para exemplo, assim a conversa fica melhor:
/*
* Retorna o nome do ícone,
* de acordo com a sua função no menu do sistema.
*
* @param value O nó para o qual se quer descobrir o seu ícone.
*/
private String getIconName(final Object value, final boolean expanded) {
if (value instanceof DefaultMutableTreeNode) {
final DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
if (node.isLeaf()) {
return "leaf.png";
}
if(node.getLevel() > 1) {
if(expanded) {
return "tree_opened.png";
}
return "tree_closed.png";
}
for (Modulo modulo : Modulo.getModulos()) {
if (node.toString().equals(modulo.getModulo())) {
return modulo.getIcone22();
}
}
}
// Nunca deve chegar nesse ponto.
return "setad.png";
}
Tratá-se de um método de uma classe TreeCellRenderer, cujo o objetivo é verificar qual a função de um nó na árvore (na verdade um menu de funções) e retornar o nome do ícone adeqüado.
Se fosse aplicar a regra de apenas um ponto de saída, ficaria assim:
private String getIconName(final Object value, final boolean expanded) {
String iconName = "setad.png";
boolean isLeaf = false;
if (value instanceof DefaultMutableTreeNode) {
final DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
// É folha (opção)?
if (node.isLeaf()) {
iconName = "leaf.png";
isLeaf = true;
}
if((node.getLevel() > 1) && (!isLeaf)) {
if(expanded) {
iconName = "tree_opened.png";
}
iconName = "tree_closed.png";
}
for (Modulo modulo : Modulo.getModulos()) {
if ((node.toString().equals(modulo.getModulo())) && (!isLeaf)){
iconName = modulo.getIcone22();
break;
}
}
}
assert iconName != "setad.png";
return iconName;
}
Um assert cai bem melhor no fim do método do que um comentário tosco do tipo "// Não deve nunca chegar aqui".
Mesmo porque acabei descobrindo que o método retornava setad.png. :-o :lol:
Só que o código ficou poluído…