2012-02-07 40 views
0

基本上,說我有一個方法:嵌套方法是可取的?

string MyMethod(string someVar); 

而且我需要另一種方法使用的返回值,是最好什麼也別:

string myString = AnotherMethod(MyMethod(someString)); 

而不是:

string anotherString = MyMethod(someString); 
string returnValue = AnotherMethod(anotherString); 
+0

我更喜歡第二個選項 – Shai 2012-02-07 10:36:38

+1

這與設計模式無關 - 它與編碼風格有關。 – Oded 2012-02-07 10:37:25

+0

內部我沒有看到任何性能優勢,因爲AFAIK都創建了一個內部存儲器來保存方法的返回值。但我會在這裏看看可讀性的目的。由於嵌套方法不需要太多參數,因此我會選擇第一種方式,因爲它不會增加行長度,也不會增加閱讀的複雜性。 – Zenwalker 2012-02-07 10:37:47

回答

0

爲了測試和調試目的(設置斷點/分別檢查每個調用的結果),較長的版本是我想要的版本。

關於速度/效率應該沒有可測量的差異恕我直言。

2

就個人而言,我會使用更長的版本 - 它更易讀並且使調試更容易。

在另一種方法的參數列表中調用方法可能會讓讀者感到困惑。

由於您需要分配一個額外的變量,因此對較長版本的內存使用會產生較小影響,但這樣做會很小。

+1

關於內存分配問題,在傳遞它之前不需要分配內存來獲取嵌套函數的值嗎?它可能並不明確,但肯定它仍然存在於某個地方......(我應該補充一點,我在這些方面還是比較新的)。 – Chris 2012-02-07 10:53:19

+0

@Chris - 我正在談論變量的額外分配。 – Oded 2012-02-07 11:05:28

+0

是的,我想我明白你的意思了。我正盯着IL linqpad爲這兩種方法生成的東西,並意識到我需要學習IL才能充分理解所發生的一切。 ;-)但是我在第一個例子中看到了這一點,儘管在實踐中它在理論上是相同的,但局部變量稍後可以再次使用,而嵌套的情況並非如此。 – Chris 2012-02-07 11:09:46

0

我也喜歡第二種選擇。 因爲它理解和使用也不那麼複雜。

+0

你能解釋一下嗎? – 2012-02-07 10:42:56

0

較長的一個更具可讀性並易於調試。 這是很容易設置一個斷點的

string anotherString = MyMethod(someString); 

也行,你可以在varieable「anotherString」添加表也是如此。