2017-04-12 74 views
-1

我已經由其他人啓動的多個項目的工作,並有一件事我還沒有真正理解..(Java)開發人員爲什麼會這樣做?

1)有時我看到一個代碼片段是這樣的:

public String retrieveSomething(){ 
    String result; 
    result = doSomethingAndReturnTheResult(); 
    return result; 
} 

2)我個人已經習慣了這種來代替:

public String retrieveSomething(){ 
    return doSomethingAndReturnTheResult(); 
} 

3)但是,從一個老鄉開發商我聽說這是更好地做到這一點,而不是關於調試/斷點,我認爲這確實是一個公平點:

public String retrieveSomething(){ 
    String result = doSomethingAndReturnTheResult(); 
    return result; 
} 

我可以理解第三個選項,但我經常從多個開發人員那裏看到第一個選項,我只是不明白它。:S我能想到的唯一原因是IDE中的對齊,它是

String result = 
    doSomethingAndReturnTheResult(); 

與:

String result; 
result = doSomethingAndReturnTheResult(); 

但除此之外,我沒有看到目的之間的差異。是否有其他人按照第一個例子顯示,如果是:爲什麼?或者你有一個合理的理由,爲什麼開發者可能會這樣做?我個人認爲這隻會增加干擾和使得它比第三個例子的可讀性,但是這可能只是我..


我知道這可能是相當的意見爲基礎/引發討論,但可以基本將問題翻譯爲:使用示例1而不是示例3(如果有)的額外用途是什麼?

在SO上也沒有合適的標籤。

+3

也許他們是前C開發人員?第一個我沒有看到任何優勢。我使用第三種情況需要快速檢查值,或者稍後添加另一個計算步驟。 – Carcigenicate

+0

我只能假設這是人們做的事情,他們有語言背景,被認爲是分別進行聲明和初始化的最佳做法(C,也許?) – domsson

+4

我個人認爲:使代碼更加複雜或難以按順序閱讀以幫助調試只是意味着更多的錯誤來調試。首先儘可能簡化代碼,然後擔心調試。 – Brandon

回答

1

我敢肯定,這些「模式」不僅在Java代碼中發現; d

1)和3)是沒有必要的。我認爲大部分開發者都不遵循這些模式。我也使用過這些構造,但不是故意的,我只是「結束了」。例如在3)中,可能會有另一個方法調用,您可能在其中使用了結果,也許只是一個日誌記錄語句,稍後將其刪除。在示例1)中,可能有一個if-else塊,並且結果將從兩個不同的方法分配,但已被移除或移動到單獨的方法。所以基本上,我只是沒有麻煩。

代碼評論真棒,擺脫那些小丑的細節。即使只是這個想法,有人會看着它會減少開發者的懶惰; D