パンくず
Effective Java
nullではなく、空配列か空コレクションを返す
概要
nullではなく、空配列か空コレクションを返す
詳細
配列やコレクションを返却する処理で、データが無いケースを扱いたい場合は
nullではなくサイズ0の空配列・空コレクションを返却すること。
このことにより、利用側でnull専用のロジックを組む必要がなくなる。
サンプルコード
package effective.creation.chapter6; public class SampleNo43 { private static final String[] EMPTY_STRINGS = new String[0]; public static void main(String[] args) { String[] hoges1_1 = getHoges1("hoge,hage,hige"); printHoges1(hoges1_1); String[] hoges1_2 = getHoges1(""); printHoges1(hoges1_2); String[] hoges2_1 = getHoges2("hoge,hage,hige"); printHoges2(hoges2_1); String[] hoges2_2 = getHoges2(""); printHoges2(hoges2_2); } // nullを返却する場合の共通処理側 private static String[] getHoges1(String commmaSeparateHoges) { if (commmaSeparateHoges == null || commmaSeparateHoges.equals("")) { return null; } return commmaSeparateHoges.split(","); } // nullを返却する場合の利用処理側 private static void printHoges1(String[] hoges) { if (hoges == null) { return; } for (String hoge : hoges) { System.out.println(hoge); } } // サイズ0の空配列を返却する場合の共通処理側 private static String[] getHoges2(String commmaSeparateHoges) { if (commmaSeparateHoges == null || commmaSeparateHoges.equals("")) { return EMPTY_STRINGS; } return commmaSeparateHoges.split(","); } // サイズ0の空配列を返却する場合の利用処理側 private static void printHoges2(String[] hoges) { for (String hoge : hoges) { System.out.println(hoge); } } }
出力
hoge hage hige ---------------------------------------------------- hoge hage hige