In XML:
android:maxLength="20"
In Code:
// EditText 並沒有直接提供 setMaxLength() 這類的方法,所以只能透過 setFilters 來達成
int maxLength = 20;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
2015年6月18日 星期四
2015年6月14日 星期日
[讀書筆記] Refactoring - CH9 - 10
Chapter 9. Simplifying Conditional Expressions
Decompose Conditional
把複雜的 conditional expressions 寫成回傳布林值的函式也許會更清楚。(視情況而定)
Consolidate Conditional Expression
把多個有相同結果的判斷式,利用 Ors 和 Ands 寫成一個判斷式。(視情況而定)
Consolidate Duplicate Conditional Fragments
簡而言之,如果 if 和 else 裡有部分同樣的邏輯,何不把它搬到外面呢?
簡而言之,如果 if 和 else 裡有部分同樣的邏輯,何不把它搬到外面呢?
Remoce Control Flag
有些人會用 control flag 來決定是否終止 while 或 for 迴圈,何不直接用 break 和 return 呢?但對於多層迴圈,control flag 還是蠻好用的。
Replace Nested Conditional with Guard Clauses
把巢層的判斷式改寫成單層的判斷式。(看範例比較清楚)
Remove Condition with Polymorphism
這取決於有沒有要把 Object type 改寫成 subclass。
Introduce Null Object
可能得要多寫好幾個 Null classes...
Introduce Assertion
Introduce Assertion
使用 assertion 可以即使反應 programmer 使用函式時的錯誤。
封裝成員變數,public to private + accessors。如果一個成員變數是 immutable 的,就不要提供 setting method。
如果函式沒要給其它人用,就把它設成 private 吧。
return Object 讓 caller 去做 cast,不如 cast 完再 return 回去。
...
Chapter 10. Making Method Calls Simpler
Rename Method
簡單又常用,沒什麼好說的。
Add Parameter/Remove Parameter
...
Separate Query from Modifier
範例舉得好像不太好。
Parameterize Method
如果有幾個函式有著相同的邏輯依賴於某些變數,可以寫成一個帶有參數的函式。
Replace Parameter with Explicit Method
根本就不會想寫出課本舉的第一個範例,第二個 factory method 的範例倒是可以參考。
Preserve Whole Object
如果有個函式傳遞某個 object 的多個成員變數當作參數,不如傳遞整個 object 吧。
a = funcA(); funcB(a); 可以的話,考慮直接在 funcB 裡,直接呼叫 funcA。
如果有一些函式的參數列都一樣,隱含著我們可以為此建立一個 object 來持有這些資料,然後 Preserve Whole Object。
Replace Parameter with Method
Introduce Parameter Object
Remove Setting Method
Hide Method
Replace Constructor with Factory Method
...
Encapsulate Downcast
Replace Error Code with Exception
Replace Exception with Test
...
...
2015年6月1日 星期一
訂閱:
文章 (Atom)