最近兩天閑下來(lái)了.心情有些不好.感覺(jué)現(xiàn)在跟當(dāng)時(shí)所謂的理想越走越遠(yuǎn).
千里之行始于足下,那就從現(xiàn)在開(kāi)始吧.
今天看了一些commons-lang3-3.1的代碼.正好最近在看<<代碼大全>>,就總結(jié)一下吧.
拿org.apache.commons.lang3.ArrayUtils來(lái)說(shuō)事吧.方法里面每個(gè)方法代碼都不多,代碼本身功能不復(fù)雜是一方面.防御式編程方面做的好,很多情況都考濾到了.
但也有些地方不明白如:
千里之行始于足下,那就從現(xiàn)在開(kāi)始吧.
今天看了一些commons-lang3-3.1的代碼.正好最近在看<<代碼大全>>,就總結(jié)一下吧.
拿org.apache.commons.lang3.ArrayUtils來(lái)說(shuō)事吧.方法里面每個(gè)方法代碼都不多,代碼本身功能不復(fù)雜是一方面.防御式編程方面做的好,很多情況都考濾到了.
但也有些地方不明白如:
1 // Character array converters
2 // ----------------------------------------------------------------------
3 /**
4 * <p>Converts an array of object Characters to primitives.</p>
5 *
6 * <p>This method returns {@code null} for a {@code null} input array.</p>
7 *
8 * @param array a {@code Character} array, may be {@code null}
9 * @return a {@code char} array, {@code null} if null array input
10 * @throws NullPointerException if array content is {@code null}
11 */
12 public static char[] toPrimitive(Character[] array) {
13 if (array == null) {
14 return null;
15 } else if (array.length == 0) {
16 return EMPTY_CHAR_ARRAY;
17 }
18 final char[] result = new char[array.length];
19 for (int i = 0; i < array.length; i++) {
20 result[i] = array[i].charValue();
21 }
22 return result;
23 }
代碼里面如果換了我,一定會(huì)在第20行加一個(gè)非空判斷,但這里沒(méi)有.也許別人認(rèn)為這是錯(cuò)誤的情況另一個(gè)方法"char[] org.apache.commons.lang3.ArrayUtils.toPrimitive(Character[] array, char valueForNull)"可以完美的替換它吧.但總覺(jué)得應(yīng)該加個(gè)非空判斷上去要好一些.
2 // ----------------------------------------------------------------------
3 /**
4 * <p>Converts an array of object Characters to primitives.</p>
5 *
6 * <p>This method returns {@code null} for a {@code null} input array.</p>
7 *
8 * @param array a {@code Character} array, may be {@code null}
9 * @return a {@code char} array, {@code null} if null array input
10 * @throws NullPointerException if array content is {@code null}
11 */
12 public static char[] toPrimitive(Character[] array) {
13 if (array == null) {
14 return null;
15 } else if (array.length == 0) {
16 return EMPTY_CHAR_ARRAY;
17 }
18 final char[] result = new char[array.length];
19 for (int i = 0; i < array.length; i++) {
20 result[i] = array[i].charValue();
21 }
22 return result;
23 }