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

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

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

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

Q&A

解決済

2回答

4719閲覧

メソッド内でgetterを複数回使用することによる可読性について

kashi1111

総合スコア7

Java

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

0グッド

0クリップ

投稿2016/08/05 13:22

編集2016/08/05 13:24

こんにちは。

現在、javaでプログラミングをしているのですが、
メソッドの中でgetterを複数回使用することは、
可読性の面で問題ないか疑問に感じています。

サンプルコードを2つ作成してみました。
どちらのように記述するのがいいのか、
助言を頂けますでしょうか?

宜しくお願致します。

###【サンプルコード1:変数に値を代入して、その変数を使用する】

public void sample01(List<SampleForm> sampleForms) { for (SampleForm sampleForm : sampleForms) { String name = sampleForm.getName(); String mail = sampleForm.getMail(); String tell = sampleForm.getTell(); boolean isAllNull = name == null && mail == null && tell == null; boolean isAllNotNull = name != null && mail != null && tell != null; if (isAllNull || isAllNotNull) { continue; } ---以下、name,mail,tellを複数回使用する--- } }

###【サンプルコード2:getterをそのまま使用する】

public void sample02(List<SampleForm> sampleForms) { for (SampleForm sampleForm : sampleForms) { boolean isAllNull = sampleForm.getName() == null && sampleForm.getMail() == null && sampleForm.getTell() == null; boolean isAllNotNull = sampleForm.getName() != null && sampleForm.getMail() != null && sampleForm.getTell() != null; if (isAllNull || isAllNotNull) { continue; } ---以下、各getterを複数回使用する---** } }

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答2

0

一事実一箇所の原則に従うと、
getterなどの値を変数に入れ直すのはあまりよろしくないととある著名なリファクタリング本で見た覚えがあります。

むしろ可読性という観点で見ると、
全てNullを表すメソッド、
全て非Nullを表すメソッドをFormのメソッドとして定義した方が良いでしょう。

投稿2016/08/05 13:33

Panzer_vor

総合スコア1636

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

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

0

ベストアンサー

アクセッサメソッドを使うことに対しては可読性の問題はないと思いますよ。

ただ、非同期処理とかで別のスレッドで変更された時などを考慮する必要があるかどうかで分けないといけないでしょうね。

また、質問のコードではNullかどうかの判定メソッドをSampleFormクラスに実装することが最善だと思います。

投稿2016/08/05 13:28

編集2016/08/05 13:39
yona

総合スコア18155

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問