kakts-log

programming について調べたことを整理していきます

java Remove Control Flag

 以下の3つのメソッドは、与えられたint型の配列から、目的の数字があるかどうかを判定するメソッドであり、処理自体は変わらないが、1から3に行くにつれてリファクタリングされている。
 あるものを判定するためのメソッドでは、目的の数字があるかどうかの情報を保持するためにboolean型のflagを使いがちだが、実装においては必ずしも必要なわけでなく、むしろ無い方が全体のコードがすっきりする場合が多い。
そして、関数内でもし目的の数字が見つかった場合、すぐreturnで返してやることにより、そもそもbooleanの変数が必要なくなり、実際かなりみやすくなる。


public static boolean find(int data, int target) {
 boolean flag = false;
 for (int i = 0; i < data.length && !flag; i++) {
  if (data[i] == target) {
   flag = true;
  }
 }
 return flag;
}

public static boolean find2(int data, int target) {

 boolean flag = false;
 for (int i = 0; i < data.length; i++) {
  if(data[i] == target) {
   flag = true;
  break;
  }
 }

 return flag;
}

public static boolean find3(int[] data, int target) {

 for (int i = 0; i < data.length; i++) {
  if (data[i] == target) {
   return true;
  }
 }
 return false;
}