2012-11-28 34 views
1

這似乎是低效或醜陋或出於某種原因,我想這是更優雅我想清理我的if-else邏輯

if (a > b) { 
    recurseWith(a); 
    recurseWith(b); 
else { 
    recurseWith(b); 
    recurseWith(a); 
} 

在我的代碼a和b是更長的時間,並且參數到新功能更龐大,而且看起來很蹩腳。有沒有辦法清除它?

該命令很重要,因爲它們與全局變量一起工作,而且,該代碼正常工作。

我正在尋找在Java中

-Austin

+0

如何編寫一個方法,該方法返回一個對象的有序列表,該參數將成爲_recurseWith()_?然後你可以迭代列表並在每個項目上調用_recurseWith()_。 – jahroy

回答

0

一個解決方案將下面的邏輯在這裏不幫忙嗎?

if(a<=b) swap(a,b); 

recurseWith(a); 
recurseWith(b); 
+0

這很好。我使用ArrayLists,所以交換它們可能需要我創建一個交換方法,這是其他地方的更多代碼。至少在我的心理工具箱中有好處。謝謝! – austin

+0

你可以upvote和/或標記我的回答正確以及如果你接受的邏輯:) – Saurabh

-2

我沒有一個很好的答案,但根據粗野/參數longness可以在一個Runnable隱藏起來,所以你只需要他們寫一次。你決定這是否「更清潔」。在這裏會更糟糕,因爲我們使用的是ab

Runnable aRunnable = new Runnable() { 
    public void run() { 
     recurseWith(a); 
    } 
} 

Runnable bRunnable = new Runnable() { 
    public void run() { 
     recurseWith(b); 
    } 
} 

if (a > b) { 
    aRunnable.run(); 
    bRunnable.run(); 
else { 
    bRunnable.run(); 
    aRunnable.run(); 
} 
+0

這絕對沒有好處。如果他只是想要一個複雜的「recurseWith」調用的子例程,他可以編寫子例程。不需要Runnables。 –

+0

我喜歡!以前從未使用過Runnable。謝謝 – austin

+0

但是他如何將所有粗略的參數傳遞給子程序呢?他將不得不再次通過他們。這使您可以使用變量在範圍內這一事實,當您將Runnable定義爲您的優勢時。 –