Evitando if de == null

Já pensei em usar strategy, mas acho que seria o caso,
Alguma sugestão de como remover esse monte de ifs do meu código?

public Edge(Character v1, Character v2) {
		super();
		this.incoming = v1;
		this.outComing = v2;
		this.weight = 0;

		if (v1 == null && v1 == null)
			this.id = null;
		else if (v1 == null && v2 != null)
			this.id = v2.toString();
		else if (v2 == null && v1 != null)
			this.id = v1.toString();
		else
			this.id = v1 + "-" + v2;

	}

crolip,
Acabo de ler um artigo muito interessante sobre as condicionais e por coincidência trata-se do padrão strategy.
O artigo trata do seguinte: “IF BOM É IF MORTO”
Ele mostra uma maneira prática de utilização do padrão strategy que pode eliminar o uso de if negociável.Para
entender melhor, dê uma lida neste link: http://marconems.blogspot.com/search/label/GoF%20Strategy

Desculpe por não poder ajudar muito,mas se você descobrir algo a mais, posta para a galera.
Abraços

Nesse caso eu deixaria assim mesmo.

assim como o viny, eu também deixaria os ifs, entretanto, como são vários “if’s” encadeados, deixaria primeiro os que tem maior chance de acontecer. Vamos supor que seria 80% de chance de nenhum deles ser null, eu inverteria a ordem deles para algo assim:

[code]public Edge(Character v1, Character v2) {
super();
this.incoming = v1;
this.outComing = v2;
this.weight = 0;

    if (v1 != null && v1 != null)  
        this.id = v1 + "-" + v2;  
    else if (v1 == null && v2 != null)  
        this.id = v2.toString();  
    else if (v2 == null && v1 != null)  
        this.id = v1.toString();  
    else  
        this.id = null;

} [/code]

é de fato eu gosto do if. ele é bem prático

e não é um monte de if , isto aí para o computador não é nada nada, mesmo uns 100 ifs, ele analisa rapidinho.
assim eu penso, claro pode haver uma forma melhor no caso de tantos ifs, mas aí não são muitos não.

[quote=crolip]Já pensei em usar strategy, mas acho que seria o caso,
Alguma sugestão de como remover esse monte de ifs do meu código?

[code]
public Edge(Character v1, Character v2) {
super();
this.incoming = v1;
this.outComing = v2;
this.weight = 0;

	if (v1 == null && v1 == null)
		this.id = null;
	else if (v1 == null && v2 != null)
		this.id = v2.toString();
	else if (v2 == null && v1 != null)
		this.id = v1.toString();
	else
		this.id = v1 + "-" + v2;

}

[/code][/quote]

a unica coisa que imagino que você possa fazer seria você separar um método só para este if em algum Utils seu e chamar ele onde for o caso. Por exemplo:

[code]public String seuMetodoAuxiliar(Object v1, Object v2){

            if (v1 == null && v1 == null)
		return null;
	else if (v1 == null && v2 != null)
		return v2.toString();
	else if (v2 == null && v1 != null)
		return v1.toString();
	else
		return v1 + "-" + v2;

}[/code]

Simplificando um pouco mais…

[code]
public String seuMetodoAuxiliar(Object v1, Object v2){

if (v1 == null && v2 == null)
    return null;

//Dado que tem o return não precisa dos else
if (v1 == null)  // Não precisa da segunda condição, já que se não obedece à condição acima e v1 é null, v2 não poderá nunca ser null
    return v2.toString();

if (v2 == null)  // Mesmo que o anterior
    return v1.toString();

return v1 + "-" + v2;

}[/code]

[quote=Jemerson]crolip,
Acabo de ler um artigo muito interessante sobre as condicionais e por coincidência trata-se do padrão strategy.
O artigo trata do seguinte: “IF BOM É IF MORTO”
Ele mostra uma maneira prática de utilização do padrão strategy que pode eliminar o uso de if negociável.Para
entender melhor, dê uma lida neste link: http://marconems.blogspot.com/search/label/GoF%20Strategy

Desculpe por não poder ajudar muito,mas se você descobrir algo a mais, posta para a galera.
Abraços[/quote]

Jemerson o artigo aborda o padrão “strategy”,e eu acho interessante conhecer padrões. Mas não se atenha ao resto do artigo sobre “if”. Não fique tentando evitar IFs, isto não faz o menor sentido.

[quote=Giulliano]

Jemerson o artigo aborda o padrão “strategy”,e eu acho interessante conhecer padrões. Mas não se atenha ao resto do artigo sobre “if”. Não fique tentando evitar IFs, isto não faz o menor sentido…[/quote]

concordo com você, se fosse o caso de criação de objetos ai sim, mas não desta forma, se fosse o caso de criação de objetos poderia se criar uma factory.

Giulliano,aix,
Obrigado pela dica.
Vou ficar atento nesses tuturiais que estão espalhados na internet.