我的技術博客經常被流氓網站惡意爬取轉載。請移步原文:http://m.survivalescaperooms.com/hamhog/p/3563880.html,享受整齊的排版、有效的鏈接、正確的代碼縮進、更好的閱讀體驗。
本文翻譯自:Structuring Modern Objective-C 譯者:Ley,戴倉薯
(接上)
這一點我們都時不時遇到過。有多少次你寫了一個(也許是)長長的 implementation 文件,十幾、二十個 #import 語句隨意堆在開頭?唉呀唉呀唉呀。沒關系!我們來幫忙解決。
#import 的順序是否重要尚存爭議,因此我們先不說它。確定重要的是你要為它們分組。然后為每一組添加注釋。
// Frameworks#import <QuartzCore data-PReserve-html-node="true"/QuartzCore.h>// Views#import "ASHButton.h"#import "ASHUserView.h"// View Controllers#import "ASHOtherViewController.h"#import "ASHThisViewController.h"
不要等到一團亂麻再去收拾——現在就開始整理!以后再往里添加就很輕松了,也讓你的代碼保持整潔。
此話一出,定是一片嘩然。但是常量的關鍵在于,嗯,它們是常量。名稱不變,值也不變。當你 #define 一個常量,它會定義在其他每一個編譯器檢查到的文件里,直到遇到#undef(如果有的話)。呃。這感覺可一點都不像常量,倒像是全局變量之類的東西。
不要這樣做。
取而代之的做法是:將常量在頭文件里聲明為 extern 變量,同時在相應的 implementation 文件中定義。
在頭文件中:
extern const CGFloat ASHHeaderViewHeight;
然后,在 implementation 中,
const CGFloat ASHHeaderViewHeight = 44.0f;
現在你的常量可以對任何需要的人可見(他們只需 #import 頭文件),但對程序的其他部分都不可見。它也不可能被 #undef ,在別處再重新 define (明顯的代碼壞味道)。
注:Michael 指出,嚴格地說,我們應該用 FOUNDATION_EXPORT 來代替 extern 。
我不在乎你給常量加的前綴是 'k' 、是類名還是一個隨便什么前綴,但是要確保一致。并且要有描述性。否則,隨著你的代碼庫越來越大,早晚會產生命名沖突的問題。這一點相信我,不會有錯。
本文翻譯自:Structuring Modern Objective-C 譯者:Ley,戴倉薯
新聞熱點
疑難解答