編寫高質量iOS與OS X程式碼的52個有效方法(一)

眯大帥發表於2018-01-25

這本書沒有OC語言的基礎知識,講的是如何高效運用這門語言 ##第一章 熟悉OC ###1、什麼是OC ·OC是為C語言新增了物件導向特性,是C的超集。OC使用動態繫結的訊息結構,也就是說,在執行時才會檢查物件型別。接收一條訊息之後,究竟執行什麼程式碼,由執行時環境而非編譯器來決定 ###2、在類的標頭檔案中儘量少引入其他標頭檔案 ·除非一定需要,否則不要引入標頭檔案。一般來說,在某個類的標頭檔案中使用向前宣告來提及別的類,並在實現檔案中引入哪些類的標頭檔案,這樣做可以儘量降低類與類之前的耦合。 ###3、多用字面量語法,少用與之等價的方法 使用字面量語法,可以縮減原始碼長度,使程式碼更為易讀

NSNumber *someNumber = [NSNumber numberWithInt:1];
複製程式碼

使用字面量能令程式碼更為整潔,沒有多餘的語法成分

NSNumber *someNumber = @1;
複製程式碼

字面量陣列 我們先看一下不使用字面量語法建立陣列的方式:

NSArray *array = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", @"object4", nil];
複製程式碼

使用字面量語法建立的陣列

NSArray *array = @[@"object1", @"object2" , @"object3", @"object4"];
複製程式碼

不僅簡單,而且還利於運算元組

普通語法:
[array objectAtIndex:1]
字面量語法:
array[1];
複製程式碼

###4、多使用常量型別,少用#define預處理指令 不要用預處理指令定義常量。這樣定義出來的常量不含型別資訊,編譯器只是會在編譯前據此執行查詢與替換操作。即使有人重新定義了常量值,編譯器也不會產生警告資訊,這將導致應用程式中的常量值不一致。 在實現檔案中使用static const來定義只在編譯單元內可見的常量。由於此類常量不在全域性符號表中,所以無需為其名稱加字首。 在標頭檔案中使用extern來宣告全域性常量,並在相關實現檔案中定義其值。這種常量要出現在全域性符號表中,所以其名稱要加以區隔,通常用與之相關的類名做字首。 ###5、用列舉表示狀態、選項、狀態碼 應該用列舉來表示狀態機的狀態、傳遞給方法的選項遺蹟狀態碼等值,給這些值起個易懂的名字。 如果把傳遞給某個方法的選項表示為列舉型,而多個選項又可同時使用,那麼就將各選項值定義為2的冪,以便通過按位或者操作將其組合起來。 用NS_ENUM與NS_OPTIONS巨集來定義列舉型別,並指明其底層資料型別。這樣做可以確保列舉是用開發者所選的底層資料型別實現出來的,而不會採用編譯器所選的型別。 在處理列舉型別的switch語句中不要實現default分支。這樣的話,加入新列舉之後,編譯器就會提示開發者:switch語句並未處理所有的列舉。

相關文章