dont reinvent the wheel ~ for all android beginners ~

Post on 22-Jan-2018

654 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Don’t Reinvent The Wheel

Kenju Wagatsuma

Agenda: ->

❖ 1m : Introduction ❖ 3m : Main part ❖ 1m : Conclusion

/** * Introduce Myself * * @kenjuwagatsuma */

'me' = { name : 'Kenju Wagatsuma ( KJ )’,

}

'me' = { name : 'Kenju Wagatsuma ( KJ )’, company : 'Recruit Technologies Co.,LTD.',

}

'me' = { name : 'Kenju Wagatsuma ( KJ )’, company : 'Recruit Technologies Co.,LTD.', profession : 'Android Development',

}

'me' = { name : 'Kenju Wagatsuma ( KJ )’, company : 'Recruit Technologies Co.,LTD.', profession : 'Android Development', favs : { 'Book' : ‘Soft Skills', 'Music' : ‘The Beatles', 'Hobby' : ‘Acoustic Guitar', 'Sport' : 'Rugby' } }

/** * My Story * * @author me */

```java

/** * Validate user id input from a form * * @param String userID */ private void validateUserId(String userId) {

// Validate userId

}

```

```java

private void validateUserId(String userId) { // Check input field here if (userId == null || userId.length() == 0) { return; }

// Validate userId

}

```

```java

// Utility class public static class UtilClass { public static boolean checkStringInput(String str) { if (str == null || str.length() == 0) { return true; } else { return false; } } }

// Activity class public void MainActivity extends Activity { private void validateUserId(String userId) { if(UtilClass.checkStringInput(userId)) return;

// Validate userId // ... } }

```

/** * @codereview * */

```java

private void validateUserId(String userId) { // Check input field here if (userId == null || userId.length() == 0) { return; }

// Validate userId

}

```

```java

private void validateUserId(String userId) { // Check input field here if (TextUtils.isEmpty(userId)) { return; }

// Validate userId

}

```

Okay, I’ll look at the source code, sir…

```java

/** * Returns true if the string is null or 0-length. * @param str the string to be examined * @return true if str is null or zero length */ public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }

```

……

……「いっしょやんけw」

```java

public static boolean checkStringInput(String str) { if (str == null || str.length() == 0) { return true; } else { return false; } }

```

My Code

```java

public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }

```

android.TextUtils

```java

public static boolean checkStringInput(String str) { if (str == null || str.length() == 0) { return true; } else { return false; } }

```

My Code

```java

public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }

```

android.TextUtils

……「いっしょやんけw」(再)

/** * Why TextUtils? * (not my own code) * */

#47 「ライブラリーを知り、 ライブラリーを使う」

“Effective Java” 2nd Edition

#47 「ライブラリーを知り、ライブラリーを使う」

利点1 ❖ 標準ライブラリを使用することで、それを書いた専門家の知識と、それをあなたよりも前に使用した人々の経験を利用することになります。

“Effective Java” 2nd Edition

#47 「ライブラリーを知り、ライブラリーを使う」

利点2 ❖ 自分の課題に少しばかり関連している問題に対する場当たり的な解決策を書くことで、時間を無駄にする必要が無い。

“Effective Java” 2nd Edition

#47 「ライブラリーを知り、ライブラリーを使う」

利点3 ❖ 自分では何もしなくても、多くの人によって繰り返し書き直されるコードは、時間と共にパフォーマンスが改善される(自分のコードではそうはいかない)。

“Effective Java” 2nd Edition

/** * So what? * * @return Conclusion */

#47 「ライブラリーを知り、ライブラリーを使う」

For All Beginners,

1. Know Android Library

2. Use Library methods

3. See & Understand source codes

3 Steps for Learning,

/** * Appendix * */

❖ android.text.format.DateUtils ❖ android.text.format.Formatter ❖ android.text.TextUtils ❖ android.text.util.Linkify ❖ android.util.Pair<F, S> ❖ android.util.SparseArray<E> ❖ android.util.Log ❖ android.util.LruCache ❖ android.graphics.Color ❖ android.media.ThumbnailUtils

android.*

android.text.TextUtils```java

/** * 与えられた文字列がすべて数値かどうかを判定

*/ public static boolean isDigitsOnly(CharSequence str) {

final int len = str.length(); for (int i = 0; i< len; i++) { if (!Character.isDigit(str.charAt(i)) { return false;

} } return true;

}

```

android.text.TextUtils```java

/** * HTMLエンコード

*/ public static boolean htmlEncode(String s) { StringBuilder sb = new StringBuilder(); char c; for (int i = 0; i < s.length(); i++) { c = s.charAt(i); switch(c) { case '<': sb.append("&lt;"); break; //...その他のエンコードすべき文字

default: sb.append(c); } } return sb.toString(); }

android.text.TextUtils```java

/** * trim()で削除された空白の数を返します

*/ public static int getTrimmedLength(CharSequence s) { int len = s.length(); int start = 0; while (start < len && s.charAt(start) <= ' ') { start++; } int end = 0; while (end > start && s.charAt(end - 1) <= ' ') { end--; }

return end - start; }

```

android.database.DatabaseUtils```java

/** * WHERE句作成のヘルパーメソッド

*/ public static String concatenateWhere(String a, String b) { if (TextUtils.isEmpty(a)) { return b; } if (TextUtils.isEmpty(b)) { return a; }

return "(" + a + ") AND (" + b + ")"; }

```

android.database.DatabaseUtils```java

/** * Cursorの中身を出力するデバッグ用メソッド

*/ public static void dumpCursor(Cursor cursor) { dumpCursor(cursor, System.out); } public static void dumpCursor(Cursor cursor, PrintStream stream) { stream.println(">>>>> Dumping cursor " + cursor); if (cursor != null) { int startPos = cursor.getPosition();

cursor.moveToPosition(-1); while (cursor.moveToNext()) { dumpCurrentRow(cursor, stream); } cursor.moveToPosition(startPos); } stream.println("<<<<<"); } ```

android.database.DatabaseUtils```java

/** * Cursorの現在の行を出力する

*/ public static void dumpCurrentRow(Cursor cursor, PrintStream stream) { String[] cols = cursor.getColumnNames(); stream.println("" + cursor.getPosition() + " {"); int length = cols.length; for (int i = 0; i < length; i++) { String value; try { value = cursor.getString(i); } catch (SQLiteException e) { value = "<unprintable>"; } stream.println(" " + cols[i] + '=' + value); } stream.println("}"); }

```

/** * And Much More! * * Happy Coding! * */

top related