第十二章-主要資料型別
本章在說明使用 int, float, ... 這些資料型別的注意事項..
很多小重點..
我只紀錄一下對我寫程式比較有幫助的..
有需要自己去書店翻一下..
使用布林變數簡化複雜的測試..
if ((eatBreakfast() && eatLunch() && eatDinner()) || (hasHeadache() || hasStomachache()))
{
}
上面看完應該眼睛都花了..
你應該開始會想 "我會在需要的時候弄懂這段程式碼在做啥" ..
其實我上面例子想表達的是..
如果 三餐都有吃 或者 身體哪裡不舒服 的話再去做區塊內的事..
而不改寫成..
boolean eatMeals = ((eatBreakfast() && eatLunch() && eatDinner());
boolean isSicked = (hasHeadache() || hasStomachache());
if (eatMeals || isSicked)
{
}
這樣不就清楚多了..
避免常值即便是安全的常值..
就算你知道打籃球最多同時上場 5 個人..
程式碼中最好還是使用 具名常數 來取代 5..
private int final MAX_PLAYERS_COUNT = 5;
...
public void checkPlayerOnCourt(int inPlayerOnCourt)
{
if (inPlayerOnCourt > MAX_PLAYERS_COUNT)
{
// 判技術犯規.
}
}
另外這樣你程式中也避免掉到處都有 "5" 這個魔術數字的問題..
如果是多維陣列請考慮用比 i 和 j 更有意義的名稱..
比如 Array[i][j][k] 考慮改成 Array[長][寬][高] 之類的..
要不改成 Array[ptrX][ptrY][ptrZ] 也比較不會弄錯(但還是不夠好)..
總之轉成現實中對應的物件而不是電腦程式的術語..
第十三章-異常資料型別
本章比較著墨在 結構 和 指標 上面..
我總覺得 JAVA 的 類別 就含蓋掉 結構 的部份了..
另外寫 JAVA 也不會處理到指標.. Orz
不過我還是乖乖看完了..
使用結構簡化參數清單..
直接拿書上例子..
addEmployeeData(name, address, phone, ssn, gender, salary)
如果我們直接包裝出一個員工結構(員工包含 name, address, ...)..
那這一大串參數就可以變成..
addEmployeeData(employee) // 參數簡化成一個員工結構.
這樣做的優點有..
1. 不用去記參數的順序..
2. 之後若參數增減也不用修改常式的參數介面(當然還是要修改常式裡的程式碼)..
缺點則是..
1. 增加耦合度..
之後要使用到此常式也必須知道 員工結構 這個東西..
所以結論是..
程式設計師要自行判斷哪種情況適合 建立新的結構來簡化參數清單 ..
用到的參數數目夠多 -> 直接傳入結構
用到的參數數目少 -> 直接傳入基本資料型別的參數
使用抽象概念層級來存取指標..
node = node.next <-> account = NextAccount(account)
event = eventQueue[queueFront] <-> event = HighestPriorityEvent()
右邊的作法 將原本的程式碼抽像化成一個常式..
對我來說..
比較好閱讀..
且可以重複利用常式 而不是 到處都看到 event = eventQueue[queueFront] 這種東西..
這兩章..
我看得有點辛苦.. Orz
0 則回應: