0

オブジェクトモデルを作成しているコードを少し作成していますが、モデルには汎用キーがあります。例えば

class myContact {
 var key;
 var value;
}

そして、次のようにそれらをインスタンス化するコードで

myContact = new myContact()
myContact.key = 'address'
myContact.value = '123 my address'

myContact2 = new myContact()
myContact2.key = 'secondAddress'
myContact2.value = '123 my other address'

そして、それらを次のような親オブジェクトにアタッチします

myBank = new company();
myBank.addContact(myContact);
myBank.addContact(myContact2);

モデルが非常に大まかに定義されているので、これは私には間違っていると感じます。ただし、クラス名からは、ある種の連絡先情報になることがわかります。

同時に、将来、別のタイプの連絡先を追加したい場合に、この種の方法論によって簡単に追加できるようになるため、これが役立つ理由がわかります。

これが良い習慣であるかどうか誰かが私に説明できますか?悪い習慣とその理由は?

私の最初の考え:

いい練習

  • 将来的に連絡先タイプを簡単に拡張できます。
  • myBankの連絡先情報をループしてデータを取得するのは簡単です。

悪い習慣

  • 特定の連絡先タイプを更新する場合は、ループして正しいキーを見つける必要があります。
  • 私はこのようなコードを書いたことがないので、完全に受け入れられるにもかかわらず、それは悪い習慣のように感じます。
  • 貧血モデル、クラスである必要はありません。
  • 定義されたキーがないため、連絡先をもう一度検索しないと、連絡先を簡単に削除または追加することはできません。
  • 連絡先が何であるか、またはあるべきかについての定義はありません。

どんな考えでも大歓迎です。

編集:私が一人で行くときにいくつかの考えを追加する

4

2 に答える 2

0

モデルが非常に大まかに定義されているので、これは私には間違っていると感じます。

「博士、私がこれをするときそれは痛い」-「それならそれをしないでください」。

それを表現するためにルーズなモデルが必要ですか?その後、それのために行きます。そうでない場合、それが単なる負担であると感じる場合は、より単純な解決策を選択してください。

どうやら、それの現在の必要性はありません。将来、この必要性が生じる可能性はどのくらいありますか?このようなリファクタリングはコードベースにどのように影響しますか?あなたはまだそれについて仮定することさえできますか?

この場合、 YAGNIの原則を適用するのが理にかなっているかもしれません。

于 2012-05-29T07:49:02.950 に答える