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

どうも、スィンです。

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

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

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

[code lang=”java” collapse=”false”] 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));
}
}
[/code]

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

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

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

Leave a comment

Your email address will not be published.

*

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