2010-12-17 6 views
0

私はOOPを学んだし、私は他の上の最初の処理方法で片側とクラスについては、 ラッパークラスを作成するの悪いプログラミング習慣があることがわかったが、私は「ので、私はこの概念を理解していません可能であれば、いくつかの説明と例を求めています。事前この「悪いプログラミング癖」の説明?

+6

ようこそ。いくつかの具体的な例を示す必要があります。文脈なしでこれに答えることは不可能です。情報に作用するクラスはまた、それを格納する必要があること - おそらくここでの提案は、これらが一つのクラスでなければならないことである –

+1

喫煙は、一般的に悪いプログラマの習慣ですが、私は、私はPHPの午前、何を知っていますか。おそらくあなたはこのアドバイスを見つけた場所に少なくともリンクすることができます例を持っていない場合は? – Anycorn

+1

.... –

答えて

1

おかげで何を記述しているのは「ダムモデル」であり、それはかなりマイナーな問題です。情報クラスのすべてのフィールドに当てはまるコード、またはアプリケーションの複数の部分で同様の操作を行っている場合は、そのデータ構造を変更または読み込みするためのコードに目を向けてください。それらのいずれかをキャッチしたら、その作業を情報クラスのメソッドに移動してみてください。問題の第二のタイプを追跡する

良い方法は、1つのドットルールです - あなた自身が別のクラスの内部クラスのメソッドを呼び出す見つけた場合、最初のクラスは、おそらく方法で操作を処理する必要があります。

+0

私は名前 "ダムモデル"が好きで、それを聞いていなかった –

2

私はあなたの方法は、情報クラス内部のほうが良いだろうな状況になっているようだと思う - 2が統合されるべき情報に作用するクラスはまた、それを格納する必要があること。この例では、一種のは簡単ですが、あなたがうまくいけば、それはと悪化見ることができました(あるいはオーバーロード演算子、非常に少なくとも、静的ツールクラス)

class CoordinatePair 
{ 
     float x, y; 

     public Coordinate(float xIn, float yIn) {x = xIn; y = yIn;} 

     public getX() {return x;} 
     public getY() {return y;} 

     public CoordinatePair sumWith(CoordinatePair other) {//body} 

     public float dotProductWith(CoordinatePair otheR) {//body} 

} 

class CoordinatePair 
{ 
     float x, y; 

     public Coordinate(float xIn, float yIn) {x = xIn; y = yIn;} 

     public getX() {return x;} 
     public getY() {return y;} 
} 

class CoordinateTools 
{ 
     public CoordinatePair add(Coordinate a, Coordinate b) 
     { 
     return new CoordinatePair(a.getX() + b.getX(), a.getY() + b.getY()); 
     } 

     public float dotProduct(Coordinate a, Coordinate b) 
     { 
     returna a.getX() * b.getX() + a.getY() * b.getY()); 
     } 
} 

が良くて行うことができますより複雑なもの。

1

私が言う:それは依存しています。

たとえば、行動からデータを分離することが最適な解決策になる場合があります。たとえば、data transfer objectsまたはdomain entitiesです。この分離は、アルゴリズムを設計するときにも役に立ちます - visitor patternか、STL algoritmsの設計方法を見てください。

一般的に、Single responsibility principleはここでは重要です。オブジェクトが論理的に独立した異なる操作を多数実行しようとしている場合、それらの操作をデータから分離することは良い解決策になります。

関連する問題