2010-12-16 3 views
1

メソッド内の参照変数を返さずに変更すると、悪い習慣とみなされますか?例えばC#で何も返さずに参照変数を変更するのは悪い習慣と考えられますか?

public Widget GetWidget() 
{ 
    Widget widget = FetchWidget(); 
    ApplyPartNamePrefixes(widget); 
    return widget; 
} 

public void ApplyPartNamePrefixes(Widget widget) 
{ 
    widget.PartName1 = String.Format("{0}{1}", "*", widget.PartName1); 
    widget.PartName2 = String.Format("{0}{1}", "**", widget.PartName2); 
} 
+3

このように、このメソッドは、Widgetクラスのインスタンスメソッドである必要があり、パラメータウィジェットを取る代わりに、現在のインスタンス(this)を操作するように感じます。 – Josh

+0

しかし、書かれていても、あなたのメソッド名ではあなたが何かを変えていることはかなりわかります。だからここでは安全だと思います。 – CubanX

答えて

2

いいえ、それは大丈夫です。これが基準変数のポイントです。 :)

0

オブジェクト内の値が変更されることがドキュメントを呼び出すメソッドであれば問題ありません。これは、XMLのドキュメントまたは適切な命名規則によるものです。あなたはApplyPartNamePrefixes(Widget widget)を持っていますが、これは幾分暗黙のうちにウィジェットの状態を変更することを暗示していますが、DoStuffがあいまいである場合は、GetDataのようになります。

関連する問題