[技術翻譯] 構建現代化的Objective-C (下)

來源:互聯網
上載者:User

本文翻譯自:Structuring Modern Objective-C 譯者:Ley,戴倉薯

為 #import 語句分組

這一點我們都時不時遇到過。有多少次你寫了一個(也許是)長長的 implementation 檔案,十幾、二十個 #import 語句隨意堆在開頭?唉呀唉呀唉呀。沒關係!我們來幫忙解決。

#import 的順序是否重要尚存爭議,因此我們先不說它。確定重要的是你要為它們分組。然後為每一組添加註釋。

 <QuartzCore data-preserve-html-node=/QuartzCore.h>    

不要等到一團亂麻再去收拾——現在就開始整理!以後再往裡添加就很輕鬆了,也讓你的代碼保持整潔。

不要用 #define 來定義常量

此話一出,定是一片嘩然。但是常量的關鍵在於,嗯,它們是。名稱不變,值也不變。當你 #define 一個常量,它會定義在其他每一個編譯器檢查到的檔案裡,直到遇到#undef(如果有的話)。呃。這感覺可一點都不像常量,倒像是全域變數之類的東西。

不要這樣做。

取而代之的做法是:將常量在標頭檔裡聲明為 extern 變數,同時在相應的 implementation 檔案中定義。

在標頭檔中:

  CGFloat ASHHeaderViewHeight;

然後,在 implementation 中,

 CGFloat ASHHeaderViewHeight = ;

現在你的常量可以對任何需要的人可見(他們只需 #import 標頭檔),但對程式的其他部分都不可見。它也不可能被 #undef ,在別處再重新 define (明顯的代碼壞味道)。

註:Michael 指出,嚴格地說,我們應該用 FOUNDATION_EXPORT 來代替 extern 。

合理地命名常量

我不在乎你給常量加的首碼是 'k' 、是類名還是一個隨便什麼首碼,但是要確保一致。並且要有描述性。否則,隨著你的程式碼程式庫越來越大,早晚會產生命名衝突的問題。這一點相信我,不會有錯。

本文翻譯自:Structuring Modern Objective-C 譯者:Ley,戴倉薯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.