if や三項演算子の結果を true や false と定義しないこと 1


どうも、スィンです。

「リファクタリングはちゃんと勉強してデザインパターンを使ったりしてやらなければならない!」

と構えずに、まずは単純なところ、小さいところ、影響範囲が少ないところから着手していくのがお勧めです。

では、例文から紹介します。func1() がif版、func2() が三項演算子版、func3() がリファクタリングしたものです。

package net.sinrpoject.lesson;

public class Sample {

public static final String TEXT_OK = "OK";
public static final String TEXT_NG = "NG";

/**
* @param args
*/
public static void main(String[] args) {
System.out.println(func1(TEXT_OK));
System.out.println(func2(TEXT_OK));
System.out.println(func3(TEXT_OK));

System.out.println(func1(TEXT_NG));
System.out.println(func2(TEXT_NG));
System.out.println(func3(TEXT_NG));
}

public static boolean func1(String value) {
if (TEXT_OK.equals(value)) {
return true;
}
else {
return false;
}
}

public static boolean func2(String value) {
return (TEXT_OK.equals(value)) ? true : false;
}

public static boolean func3(String value) {
return (TEXT_OK.equals(value));
}
}

func1() や func2() では条件式の結果が「真」の場合に「true」を返し「偽」の場合に「false」を返していますが、この場合は条件式の結果をそのまま return すれば良いのでこれらの書き方は冗長です。

わかっている人は絶対やらない書き方で「何を今更!こんなの常識!」と言われそうですが、昔も今も結構このようなコードを見ます。「自分これ書いてる!」って人は注意してください。「見たことある!」って人は、相手のプライドを傷つけないように喧嘩にならないように最大限注意してうまく指摘してあげてください。

今回はここまで!
ではでは!

使う人も自分も楽しくなるアプリ制作を心がけてます。趣味は楽器演奏、映画・アニメ・ドラマ鑑賞とゲーム。特にタイムトラベルものが好き。

業務系SEとしてWindows/Webシステム開発を15年以上やってましたが、今は一般向けAndroid/iOSアプリ開発がメインです。

0

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)