Pesquisar

quarta-feira, 17 de dezembro de 2008

Brincando com constantes

Tudo começa com um simples programa que imprime o nome e o sobrenome.

package exemplo.entidade;

public class Testadora {

public static void main(String[] args) {
mostrarNome();
mostrarSobrenome();
}

private static void mostrarSobrenome() {
System.out.print("Sobrenome ");
}

private static void mostrarNome() {
System.out.print("Nome ");
}

}


Alguém resolve fatorá-lo, resolve deixar tudo em um único local.

package exemplo.entidade;

public class Testadora {
public static final int NOME = 10;
public static final int SOBRENOME = 20;

public static void main(String[] args) {
mostrarNome();
mostrarSobrenome();
}

private static void mostrarSobrenome() {
mostrar(SOBRENOME);
}

private static void mostrarNome() {
mostrar(NOME);
}

private static void mostrar(int tipo) {
if (tipo==NOME){
System.out.print("Nome ");
}else if(tipo==SOBRENOME){
System.out.print("Sobrenome ");
}
}

}

A principio parece estar agregando mais complexidade a algo que deveria simplesmente fazer algo trivial. Um terceiro resolve retirar os "mediadores".

package exemplo.entidade;

public class Testadora {
public static final int NOME = 10;
public static final int SOBRENOME = 20;

public static void main(String[] args) {
mostrar(NOME);
mostrar(SOBRENOME);
}

private static void mostrar(int tipo) {
if (tipo==NOME){
System.out.print("Nome ");
}else if(tipo==SOBRENOME){
System.out.print("Sobrenome ");
}
}

}

Um quarto metido a espertinho realiza uma mudança que deixa o código bem mais simpático.

package exemplo.entidade;

public class Testadora {
public static final int NOME = 10;
public static final int SOBRENOME = 20;

public static void main(String[] args) {
mostrar(NOME+SOBRENOME);
mostrar(NOME);
mostrar(SOBRENOME);
}

private static void mostrar(int tipo) {
if (tipo==NOME){
System.out.print("Nome ");
}else if(tipo==SOBRENOME){
System.out.print("Sobrenome ");
}if (tipo==NOME+SOBRENOME){
System.out.print("Nome Sobrenome ");
}
}

}

Fica simples e objetivo o propósito mostrar o nome e o sobrenome. :)

ps: favor notar que o post não discute o fato de usar ou não polimorfismo, apenas mostra um modo elegante de se aproveitar o uso de constantes.