2013-08-07 88 views
0

這可能是一個非常愚蠢的問題,但;引用對象需要返回嗎?

如果我創建一個數據集讓說,

[WebMethod(Description = "Returns a Fruit XML")] 
    public XmlElement GetALLFruits() 
    { 
     Fruit fruit = new Fruit(); 
     fruit.Name = "Mango La Ka Buma"; 
     fruit.expiryDate = "11/11/1911"; 
     getFruitCrateDetails(fruit); 

     return fruit.xml; //just giving example syntax might be wrong 
    } 

    public void getFruitCrateDetails(Fruit fruit) 
    { 
     FruitCrate crate = new FruitCrate(); 
     crate.id = 999; 

     Fruit.Crate.add(crate); 

     // Now here do I need to return "Fruit" object or not ? 
    } 

而且我有10或20的方法,我應該讓他們在方法或1種大方法結合起來。

+0

您的意思是說,在GetAllFruits中設置的水果對象會在函數被調用後添加999的Id值? –

+0

是的,因爲我正在構造一個大的XML文件 – Mathematics

+0

那麼在這種情況下,您將需要將返回類型設置爲Fruit。而不是無效的。 –

回答

0

這通常是一種風格的選擇,但大多數開發人員對大型方法不滿。

通過劃分方法,你可以免費獲得這些東西;

  • 的代碼重用 - 你可以兩次調用該方法,而無需複製代碼。
  • 分離關注點 - 我使用的一條黃金法則是每個方法都應該這樣做,就是說它的名字就是這樣。複雜的方法會依次調用其他方法。

你最終什麼是乾淨的,模塊化的系統,一口大小的塊邏輯的閱讀和沒有文字搞亂你的心的牆理解。

另外,以'get'爲前綴的方法應該返回一個值。如果不是,請考慮將其命名爲「添加」。這是另一種風格,但是如果你在一個團隊中工作,它有助於將你的方法名稱與方法簽名進行匹配。

1
[WebMethod(Description = "Returns a Fruit XML")] 
public XmlElement GetALLFruits() 
{ 
    Fruit fruit = new Fruit(); 
    fruit.Name = "Mango La Ka Buma"; 
    fruit.expiryDate = "11/11/1911"; 
    fruit = getFruitCrateDetails(fruit);//This is call to method 1. Don't worry your values will not be lost fruit.Name will remain as it is. 


    return fruit.xml; //just giving example syntax might be wrong 
} 

public Fruit getFruitCrateDetails(Fruit fruit) 
{ 
    FruitCrate crate = new FruitCrate(); 
    crate.id = 999; 
fruit.crate.Add(crate);//Now no other method should set crateValues 
return fruit; 
} 

public Fruit getFruitCrateDetails1(Fruit fruit) 
{ 
SomeNewProperty = "test"; 
fruit.PropertyName = SomeNewProperty;//Now no other method should set value for SomeNewProperty 
return fruit; 
} 

請閱讀評論。我還沒有測試代碼。所以有可能你得不到理想的輸出。我盡力解釋你。