Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Don't Reinvent The Wheel ~ For All Android Beginners ~

668 views

Published on

Advice for all Android Development Beginners how to learn themself.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Don't Reinvent The Wheel ~ For All Android Beginners ~

  1. 1. Don’t Reinvent The Wheel Kenju Wagatsuma
  2. 2. Agenda: -> ❖ 1m : Introduction ❖ 3m : Main part ❖ 1m : Conclusion
  3. 3. /** * Introduce Myself * * @kenjuwagatsuma */
  4. 4. 'me' = { name : 'Kenju Wagatsuma ( KJ )’, }
  5. 5. 'me' = { name : 'Kenju Wagatsuma ( KJ )’, company : 'Recruit Technologies Co.,LTD.', }
  6. 6. 'me' = { name : 'Kenju Wagatsuma ( KJ )’, company : 'Recruit Technologies Co.,LTD.', profession : 'Android Development', }
  7. 7. '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' } }
  8. 8. /** * My Story * * @author me */
  9. 9. ```java /** * Validate user id input from a form * * @param String userID */ private void validateUserId(String userId) { // Validate userId } ```
  10. 10. ```java private void validateUserId(String userId) { // Check input field here if (userId == null || userId.length() == 0) { return; } // Validate userId } ```
  11. 11. ```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 // ... } } ```
  12. 12. /** * @codereview * */
  13. 13. ```java private void validateUserId(String userId) { // Check input field here if (userId == null || userId.length() == 0) { return; } // Validate userId } ```
  14. 14. ```java private void validateUserId(String userId) { // Check input field here if (TextUtils.isEmpty(userId)) { return; } // Validate userId } ```
  15. 15. Okay, I’ll look at the source code, sir…
  16. 16. ```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; } ```
  17. 17. ……
  18. 18. ……「いっしょやんけw」
  19. 19. ```java public static boolean checkStringInput(String str) { if (str == null || str.length() == 0) { return true; } else { return false; } } ``` My Code
  20. 20. ```java public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; } ``` android.TextUtils
  21. 21. ```java public static boolean checkStringInput(String str) { if (str == null || str.length() == 0) { return true; } else { return false; } } ``` My Code
  22. 22. ```java public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; } ``` android.TextUtils
  23. 23. ……「いっしょやんけw」(再)
  24. 24. /** * Why TextUtils? * (not my own code) * */
  25. 25. #47 「ライブラリーを知り、 ライブラリーを使う」 “Effective Java” 2nd Edition
  26. 26. #47 「ライブラリーを知り、ライブラリーを使う」 利点1 ❖ 標準ライブラリを使用することで、それを書い た専門家の知識と、それをあなたよりも前に使用 した人々の経験を利用することになります。 “Effective Java” 2nd Edition
  27. 27. #47 「ライブラリーを知り、ライブラリーを使う」 利点2 ❖ 自分の課題に少しばかり関連している問題に対 する場当たり的な解決策を書くことで、時間を無 駄にする必要が無い。 “Effective Java” 2nd Edition
  28. 28. #47 「ライブラリーを知り、ライブラリーを使う」 利点3 ❖ 自分では何もしなくても、多くの人によって繰 り返し書き直されるコードは、時間と共にパ フォーマンスが改善される(自分のコードではそ うはいかない)。 “Effective Java” 2nd Edition
  29. 29. /** * So what? * * @return Conclusion */
  30. 30. #47 「ライブラリーを知り、ライブラリーを使う」 For All Beginners,
  31. 31. 1. Know Android Library 2. Use Library methods 3. See & Understand source codes 3 Steps for Learning,
  32. 32. /** * Appendix * */
  33. 33. ❖ 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.*
  34. 34. 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; } ```
  35. 35. 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(); }
  36. 36. 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; } ```
  37. 37. 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 + ")"; } ```
  38. 38. 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("<<<<<"); } ```
  39. 39. 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("}"); } ```
  40. 40. /** * And Much More! * * Happy Coding! * */

×