あまりにも多くのパラメータを持つコンストラクタ

MJDeveloping:

あまり離れて与えることなく、私は9つの属性を持つオブジェクトを作ってるんです。のは、例えばRPGを使用してみましょう。

float strength, constitution, fortitude, dexterity, intelligence, charisma, wisdom, willpower, perception;

コンストラクタの、対象がプレイヤーと呼ばれていることを考えると

public Player(float strength, float constitution, float fortitude, float dexterity, 
float intelligence, float charisma, float wisdom, float willpower, float perception){}

SonarLintによると:「コンストラクタ許可7よりも大きい9つのパラメータを持っています。」

私はSonarLintは、それがこのような状況に対処するための「正しい」方法がある場合、コードは実際には、機能を停止しませんと言っていることを知っていますが、私が知ってみたいです!

感謝

これは、このような質問に対して間違ったフォーラムがある場合Psが、右のいずれかに向けて私をポイントしてください!

トムホーティン - tackline:

理想的には、より小さな単位とコンにクラスを分けます。

彼らは事の同じ種類のすべてのように見えるように、この場合には、Map(特にEnumMap)適切であるように思われます。

最後の手段として、Builderパターンがあります。

 Player player = Player.builder()
     .strength(       )
     .constitution(   )
     // ...
     .perception(     );

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=370974&siteId=1