世界はコードを可能な限り表現力豊かにする方向に進んでいることがわかります。一部の言語では、独自の DSL を簡単に定義できるようになっています。しかし、これを PHP や純粋な Java などの言語や他のほとんどの言語にどのように組み込むことができるかはわかりません (これは Ruby と Python の両方である程度行われているようです)。
Person エンティティがあるとします。$days
ユーザーが少なくとも以前にサインアップしたかどうかを教えてくれる関数が欲しいです。さて、2つの質問:
- この関数をエンティティ自体に配置する必要がありますか? 私の知る限り、エンティティは DAO であり、その役割は基礎となるデータベースへの低レベル アクセスを提供することだけです。ただし、 の
$person->hasSignedUpAtLeast(7)
ようなものよりも表現力があるようPersonService::hasSignedUpAtLeast(7)
です。 - ユーザーが自分の IDE を調べてパラメーター名を確認することなく、引数をより明確にするにはどうすればよいですか? お気づきかもしれませんが、
7
意味がわかりません。7日ということですか?何ヶ月?年?Ruby では と言えますperson.hasSignedUpAtLeast(7.days.ago)
が、PHP ではそのような余裕はありません。
意見や議論ではなく、高品質のアプリケーションで使用される実証済みのベスト プラクティスに基づく回答を探していることに注意してください。関数名は常に動詞でなければならないが、プログラマーは関数名で引数の単位 (EG メートル、日など) のようなものを伝える必要がある、この種の問題を処理する単一の方法があるに違いないと私は信じています。 .