32
1 為為為為為為為為為 ?

training and sharing about clean code

Embed Size (px)

Citation preview

Page 1: training and sharing about clean code

1

為什麼程式碼要易讀 ?

Page 2: training and sharing about clean code

2

Page 3: training and sharing about clean code

3

除了我之外沒有人會看這份程式也許你會說↓

Page 4: training and sharing about clean code

4

Page 5: training and sharing about clean code

5

三元運算子與一行化的愛恨情仇return ( Z > B ) ? True : False ;

if ( Z > B ) {   return True ;} else {   return False ;}

Page 6: training and sharing about clean code

6

return ( Z > B ) ? True : ( X > Y ) ? True : False ;↓

return ( Z > B ) ? True : ( X > Y ) ? True : False ;

這已經是一種性功能障礙了

Page 7: training and sharing about clean code

7

一行化的暗示‧程式碼越少效率越好‧一行化比較潮‧看不懂的人會叫我大大

Page 8: training and sharing about clean code

8

Naming

Page 9: training and sharing about clean code

9

Page 10: training and sharing about clean code

10

int tmp = 0;for (int x=0; x<24; x++){

for (int y=0; y<60; y++){for (int z=0; z<60; z+

+){tmp++;

}}

}return tmp;

Page 11: training and sharing about clean code

11

int sumSeconds = 0;for (int hour=0; hour<24; hour++){

for (int min=0; min<60; min++){

for (int sec=0; sec<60; sec++){

sumSeconds++;}

}}return sumSeconds;

Page 12: training and sharing about clean code

12

加入額外的輔助資訊Public int createCache(int size);

Public int createCache(int sizeByMB);

Public int createCacheByMB(int size);

Page 13: training and sharing about clean code

13

具體、具體再具體Animal

↓Cat↓

Tiger

Page 14: training and sharing about clean code

14

AnAppleADayKeepTheDoctorAway anAppleADayKeepTheDoctorAway =New AnAppleADayKeepTheDoctorAway(“Apple”);

BestFruit bestFruit = new BestFruit(“Apple”);

Page 15: training and sharing about clean code

15

排版慣例 1( 小 ) 駝峰式命名法setValuegetValuecheckValueisValue

Page 16: training and sharing about clean code

16

排版慣例 2使用 Space 進行縮排if (Z > B){

a = 1; b = 2; c = 3; d = 4 e = 5;}

使用 Tab 進行縮排if (Z > B){

a = 1;b = 2;c = 3;d = 4e = 5;

}

Page 17: training and sharing about clean code

17

排版慣例 3永遠都使用大括號將 if 及迴圈語法關起來if ( Z > B)

PK = True;else

PK = False;echo “Shit”;

Page 18: training and sharing about clean code

18

hashOut.data = hashes + SSL_MD5_DIGEST_LEN;hashOut.length = SSL_SHA1_DIGEST_LEN;if ((err = SSLFreeBuffer(&hashCtx)) != 0) goto fail;

if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0) goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0) goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail; goto fail;if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail;

Page 19: training and sharing about clean code

19

詞不達意

Page 20: training and sharing about clean code

20

Filter, but filter what ?filterYear(int year)

select/exclude

Page 21: training and sharing about clean code

21

邊界錯誤閉區間 ( 包含 /包含 )

min/maxfirst/last

半開放區間 ( 包含 /不包含 )begin/end

Page 22: training and sharing about clean code

22

布林名稱混亂Boolean readPassword = true;

↓Boolean isNeedPassword = true;

Prefix for Boolean : is / has / can / should

Page 23: training and sharing about clean code

23

程式的使用說明書 -註解

Page 24: training and sharing about clean code

24

/**•投資決策系統•將投資決策獨立拉出的好處是 balabala...**/Public void proccessInvestTask(){

if (Z>B){ // 如果利大於弊就去投資// TODO 老闆說還要加入核決系統invest(); // 去投資// TODO 下次要改名成 printReport();showReport(); // 這段會將報表印出

}}

Page 25: training and sharing about clean code

25

if ( B > Z) {

…}

if ( B < Z) {

…}

if ( Z > B) {

…}

if ( Z < B) {

…}

Page 26: training and sharing about clean code

26

if ( isCheck == true) {

…}

if ( !isCheck == false) {

…}

Page 27: training and sharing about clean code

27

不要看窗外

Page 28: training and sharing about clean code

28

Single Responsibility Principle單一責任原則程式可讀性 UP~UP~UP~

解耦合降低維護成本增加再用性 (Resuable)

Page 29: training and sharing about clean code

29

重構、重構再重構Wiki : 代碼重構( Code refactoring)指對軟體代碼做任何更動以增加可讀性或者簡化結構而不影響輸出結果。

Page 30: training and sharing about clean code

30

迷思:可讀性 vs 效率nameList.contains(“王小明” );

nameSet.contains(“王小明” );

Page 31: training and sharing about clean code

31

人非聖賢寫就對了Just do it!

Page 32: training and sharing about clean code

32

Q & A