0

Javaでは、単純なモデル/ pojoがある場合、ゲッター/セッターを使用します。このようにすると、コードが自己文書化されることがわかります。getName()を呼び出すと名前が返されます。データベースなどにどのようにマップされるかを気にする必要はありません。

Pythonのように、ゲッターやセッターが不格好になり始める言語を使用すると問題が発生し、人々が悪いと言うのをよく耳にします。たとえば、ある時、私はPHPプロジェクトを持っていました。このプロジェクトでは、データの一部がデータベースから照会され、列の値がオブジェクト/辞書にマップされました。私が見つけたのは、このようなコードは読みにくいということでした。実際にはコードを読むだけではなく、コードを読んだ後、値がデータベースからフェッチされていることに気付き、データベースを調べる必要があります。それを理解するために常にスキーマ。クラス定義を見て、文書化されていない魔法の鍵がそこにないことを知っているだけで、できることはありません。

だから私の質問は、ゲッターとセッターなしでコードをどのように文書化するのですか?

4

1 に答える 1

1

私の意見では、クラスに文書化されていない属性があってはなりません。PHPやその他の言語では、クラスで定義されているかどうかに関係なく、どこからでも属性をクラスに貼り付けることができます。あなたが説明する理由などのために、それは悪い習慣だと思います。

読みにくいです。

他のプログラマー(将来の自分を含む)が何が起こっているのかを理解するのが難しくなります。

IDEのオートコンプリート機能が機能しなくなります。

多くの場合、ドメイン層が永続層に依存しすぎます。

ゲッターとセッターを使用してクラスの定義された属性にアクセスするかどうかは、私にはもう少し代替可能です。一貫性を保つのが好きなので、オブジェクトの配列を遅延ロードするgetChildren()メソッドを持つクラスがある場合は、$ children属性を公開せず、他の属性も非公開にする傾向があります。 。それはもう少し好みの問題だと思いますが、クラス内の一部の属性($ object-> name;)に直接アクセスしたり、ゲッター/セッターが他の属性にアクセスしたりするのは面倒です。

于 2012-06-15T15:25:17.860 に答える