質問: ### 前提 * プロジェクトはMVCで構成 * モデルのプライベートメソッドでDBから該当データを取得し、配列で返す * 同一モデルのパブリックメソッドから上のプライベートメソッドを呼び出し、受け取った配列を少し整形して配列で返す この2つのメソッドがモデルあり、コントローラからパブリックメソッドを呼び出して、その後ソートなどを行い、ビューに渡します。 つまり、 View --> Controller --> Model::publicMethod --> Model::privateMethod のような構成です。 ### わからない点 例えばDBからデータを取得するプライベートメソッドが ``` private function fetchDatas(int $id) : array { /* sqlを実行する処理 */ ... } ``` のように命名されているとき、パブリックメソッドにはどう命名するのが適切なのでしょうか。 パブリックメソッドはgetterではないのでget〜とつけるのは間違いだとは思うのですが...。
回答: get~でも問題ないと思います。 動詞よりも名詞に気をつけたほうがよいかと思います。 名前のつけかたの基準は基本的には外部に公開する一番便利なメソッドと 内部で使う汎用的なメソッドで名前を考えることがよいかと思います。 たとえば食べ物屋とかで注文するのをイメージしてみてください。 お客は作り方の詳細はしらないけど、注文したものがでてくればよくて、 調理場は、作り方を知っている必要があります。 publicは、お客さんが注文をするときの名前で、呼び出す側が内部のことをしらなくても 使えるような名前になっていたほうがよいです。 privateは内部から呼び出すものなので、より詳細の作業かつ汎用的な名前になるかと思います。 場合によっては、builderみたいな専用の処理を用意する場合もあります 結果的にprivateとpublicが同じ名前になっても問題はないかと思います。 とはいえ、今回のケースで「fetchData」がpublicにはなるのは名前の意図がわからないのでNGかと。 ``` public get牛丼() { return make牛丼(); } public get牛丼セット() { return make牛丼().add(makeサラダ); } private make牛丼() {} private makeサラダ() {} ``` あとは、DB検索系に使う動詞だと、想定する検索結果件数の違いで名前をわけることがあります。