質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

1102閲覧

メソッドや関数からメソッド等を呼ぶ、入れ子になってるような場合の命名について。

LokiTick

総合スコア27

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2017/11/24 04:01

###質問
うまく説明できないのですが例えば、以下のようなDBからデータを取ってくるようなプログラムがあるとします。

Java

1 2class Service { 3 private Dao dao; 4 5 Data fetchXXX(key) { 6 dao.selectXXX(key) 7 } 8} 9 10class Dao { 11 Data selectXXX(key) { 12 //DB処理 13 return data; 14} 15

Serviceはよりクライアントに近い層から呼ばれるとします。
上記のようにServiceではDaoを利用して具体的な処理を移譲しています。
そこで親となるメソッド、例だとfetchXXX(key)の名前は子のselectXXX(key)と同じにすべきでしょうか。
Serviceでデータに対するなんらかの処理をしてそれを返す場合は異なった名前になるのが予想されますが、
上記のようにServiceをインターフェースとしてDaoを利用するような(処理を単純に移譲するだけ)場合、
名前は同じなのが良いのか、よくないのか教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

メソッドの命名における重要なポイントの1つは「利用者に対するインターフェイス」という観点です。つまり提示の例では、Daoクラスを利用する側がどのような名前でメソッドを呼び出せるようにするか?が重要です。Serviceクラスのメソッド名はServiceクラスを利用する側にとって重要な名前であり、それは本来Daoクラスのメソッド名とは関係のないことです。

また、クラス名には適切な「役割名」を、メソッド名には適切な「責務名」を付けなければなりません。その意味からは、ある関係のみ(今回の例ではServiceとDao)に着目して名前を付けるのは適切ではありません。可能な限り1つのクラスは他のクラスと密結合にならないように独立した存在として設計すべきです。

したがって、Serviceクラスから単に移譲で呼び出されるからという理由だけでDaoクラスのメソッドをServiceクラスのメソッド名と同じにしなければならないという必然性はないし、また場合によっては同じ名前になることもありうるということです。
あくまでも、そのクラスの役割と責務、そして外部に対するインターフェイスに着目して名前を検討すればよいでしょう。

投稿2017/11/24 05:50

編集2017/11/24 05:51
amadablam

総合スコア402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LokiTick

2017/11/24 07:46

非常にわかりやすく、私の知りたかったことをお答えしていただきありがとうございました。 "利用者に対するインターフェイス"という観点はとてもわかり易く、今後はこのコトを肝に銘じて良い設計を心がけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問