2017-06-06 3 views
0

は、私はクラスIは、この数が大きいことが判明して、23個の特性を持っているを持って、私はそれらのいくつかを取り出して別のクラスでそれらをグループ化し私はクラスに埋め込まBが、にはまだ17のプロパティがあります。OOPデザイン:クラスのプロパティの数に関するベストプラクティスは何ですか?

私の問題は、あまりにも多くの埋め込みクラスで終わりたくないので、私の質問は、そのような状況でのベストプラクティスとは何か、クラス内にあるプロパティ/プロパティの範囲はどれくらいですか?

+0

少なくとも、なぜこれが下降表示されているのかについてのコメントを提供しますか? –

+1

まあ、私はコメントを残していないdownvotersはとにかく良いことが好きではない人だと思います。あなたは今良いです;-)。 – mohsenmadi

答えて

1

私はあなたがシングル責任原則に従うべきだと思います。

基本的に、クラスが1つの「もの」を表しているかどうかをチェックします。そうでない場合は、別のクラスに分割します。

多くのプロパティ/フィールドを持つことは間違いありませんが、各フィールド/プロパティが必要かどうかを検討してください。たとえば、ログインシステムを使用していて、各ユーザーが電子メールとパスワードを持っているとしたら、UserクラスにはageまたはfavouriteFoodというプロパティは必要ありません。

スタッフを小さなクラスにグループ化するかどうかについて。それを!それはまさにクラスのためのものです - データをグループ化します。また

は、あなたがname1name2name3name4などのようなあなたのプロパティ名にパターンを見ていますか?このようなものがある場合は、代わりにnamesという配列を使用する方が良いでしょう。

+0

ありがとう、あなたの答えは私にはっきりとした。私は正しい道にいると信じています。 –

+0

@ ElSam私の答えがあなたの質問に答えると思うなら、それを受け入れることを検討してください! – Sweeper

1

クラスはすべて、そのクラスに関連し、プリミティブ型(String、Integer、Booleanなど)のものであれば、多くのプロパティを持つことができます。また、これらのプロパティのいくつかは、集約クラスに埋め込んだ独自のクラス(たとえば、AddressプロパティをAddressにする)にまとめることもできます。あなたのポストから、それは私が助言できるすべてです。

+0

それはまさに私がやったことです、私はプリミティブ型のいくつかのプロパティを持っていました。私はそれを自分のクラスに分類し、それを私の集約クラスに埋め込みました。 –

+0

自然なこと - 心配する必要はありません。そのため、データベースの中には時には10代と10代やプロパティがあり、3番目の正規形では大丈夫です。有用であれば、答えを受け入れる/受け入れる。 – mohsenmadi

2

正確な数字以上に重要なことは、あなたのクラスの結束度が高いことです。

高い結合性は、クラスの変数が頻繁に組み合わせて使用​​されることを意味します。 $ fooが1つのメソッドでのみ使用され、$ barが別のメソッドでのみ使用されている場合、$ fooと$ barを含むクラスの結束度が低くなり、コードが別のクラスにリファクタリングされる恩恵を受ける可能性があります。

関連する問題