致iOS初學(xué)者的建議--編程規(guī)范與風(fēng)格

每個(gè)初學(xué)者貌似都是拿到編程入門就開始擼語法編程技巧等贞谓,要知道編程規(guī)范性也是一個(gè)很重要的點(diǎn)座每,而且琉朽,好的編程規(guī)范性或者統(tǒng)一的編程風(fēng)格會讓你的代碼更具可閱讀性與維護(hù)性域帐,這就跟從讀書開始老師就經(jīng)常叮囑字寫得整齊好看的重要性妙黍°睬郑總之就是,風(fēng)騷與效率并行(-.-)拭嫁。個(gè)人建議在邊開始學(xué)習(xí)語法內(nèi)容的時(shí)候也要邊注意下編程規(guī)范與編程風(fēng)格可免。每個(gè)公司都有不同的編程風(fēng)格要求,不過也大多差別不會很大做粤。

項(xiàng)目分組

如果項(xiàng)目比較大浇借,建議把幾個(gè)模塊拆分后類似Pod的結(jié)構(gòu)組合在一起,普通工程用主Project+Pod即可怕品。項(xiàng)目組織結(jié)構(gòu)可類似如下:

/$Pod(可選)
/$Target
  /Main: AppDelegate以及Main等
  /Cells: 通用Cell
  /Views: 視圖類(按功能分組)
  /ViewController: 控制器(按功能分組)
  /Utils: 工具類
  /Categories: 類拓展
  /Managers: 數(shù)據(jù)業(yè)務(wù)管理類
  /Model: 模型文件
  /Vendors: 第三方庫
  /Resources: 資源文件
  /Others: pch等文件   
  • Cells:如果是特定Cell只用在某個(gè)TableView妇垢,可寫在同一個(gè)包括了TableView的類里
  • Categories: 建議不要分散太多文件,可寫在同一個(gè)類似"NSObject+Categories.h"的類里堵泽,然后按功能劃分成多個(gè)類修己。
  • Managers: 如果使用MVVM模式可劃分為DataManager、CoreDataManager迎罗、NetworkManager等
  • Models: 普通模型文件/CoreData實(shí)體模型文件等
  • Resources: 放置圖片與plist等設(shè)置文件睬愤,可按功能分組。

注:項(xiàng)目文件分組建議建立相應(yīng)的物理文件夾

代碼格式

注釋

編寫注釋文檔是個(gè)好習(xí)慣纹安。不僅有助于他人理解你的代碼尤辱,如果是多人開發(fā)的話,也有助于你自己回過頭去看代碼厢岂。在接口方法光督、類屬性、實(shí)例變量塔粒、宏结借、枚舉值等都應(yīng)該編寫注釋文檔,另外卒茬,在關(guān)鍵代碼或者難理解的地方也建議應(yīng)該編寫注釋船老。
Tips: VV-Document插件可以快速地生成注釋文檔格式咖熟。

命名

  • 使用簡潔明了的命名,建議使用駝峰式命名柳畔,屬性與方法使用小駝峰馍管,類名使用大駝峰。
  • 項(xiàng)目內(nèi)文件使用統(tǒng)一前綴薪韩,與系統(tǒng)框架區(qū)分開确沸。建議使用三個(gè)字母前綴。
  • 實(shí)例變量命名使用_前綴

注意:非初始化方法建議不使用init前綴俘陷,非需要自行管理內(nèi)存的不使用create前綴罗捎,變量屬性不使用new前綴,初始化方法等建議返回instancetype

宏與常量

避免使用宏岭洲,簡單的數(shù)量等建議直接使用常量宛逗。全局宏按功能統(tǒng)一定義在全局頭文件,全局常量也建議定義在同一個(gè)或者幾個(gè)文件盾剩,可按功能劃分開雷激。內(nèi)部常量用小寫k+類名做前綴,外部常量用類名做前綴

  • 內(nèi)部常量告私,格式參考:
CGFloat const kTHKAlertViewContentViewHeight = 200.0f;
  • 外部常量屎暇,格式參考:
在.h定義:
extern NSString * const THKUserDidLoginNotification;

在.m中實(shí)現(xiàn):
NSString * const THKUserDidLoginNotification = @"THKUserDidLoginNotification";

聲明

聲明所在的接口應(yīng)當(dāng)盡量簡單,合模塊的功能盡量保持單一驻粟,這樣能夠盡可能地減少模塊之間的耦合程度也減少不必要的干擾根悼,所以屬性以及方法在非必要的情況下不暴露到頭文件。

  • 實(shí)例變量僅在需要暴露給子類的時(shí)候在頭文件上使用@protected蜀撑。
  • 屬性若非必要的情況挤巡,聲明為readonly。
  • 一般只暴露immutable類型的屬性酷麦。
  • 枚舉值使用NS_ENUM矿卑。

編碼風(fēng)格

建議在項(xiàng)目里保持一種編碼風(fēng)格,這樣不僅有助于代碼的維護(hù)也有助于他人閱讀代碼沃饶。要不然你一種風(fēng)格我一種風(fēng)格母廷,多人合作的時(shí)候會使得代碼看起來很混亂。在必要的地方要用空格分隔開糊肤,這樣也使得代碼琴昆,唔,更為好看風(fēng)騷馆揉。其實(shí)個(gè)人更建議按照Apple自動生成的代碼風(fēng)格去進(jìn)行編碼业舍,更能保持一致性。

實(shí)例變量或?qū)傩裕?/p>

NSObject *_object;
@property (nonatomic, strong) NSObject *object;

或者

NSObject * _object;
@property (nonatomic, strong) NSObject * object;

方法:括號可以保持各占一行上下對齊或者左括號在方法一行,右括號占一行舷暮。-號蟋座、+號與方法返回值之間應(yīng)該有一個(gè)空格。如果左括號在方法一行脚牍,與最后的方法名之間也應(yīng)該有一個(gè)空格。

- (void)viewDidLoad()
{
}
+ (void)load
{
}
[[THKAlertView shareInstance] show];//疏散型

或者

- (void)viewDidLoad() {
}
+ (void)load {
}
[[THKAlertView shareInstance]show];//緊密型

控制流:同方法一樣巢墅,主要是括號的風(fēng)格诸狭,如果是第一種建議也要用一下空格分隔下代碼。

if (statement) {
} else if (statement) {
} else {
}

switch (statement) {
    case type1: {
        break;
    }
    case type2: {
        break;
    }
    default: {
        break;
    }
}

for (statement) {
}

或者

if (statement)
{
}
else if (statement)
{
}
else
{
}

switch (statement)
{
    case type1:
    {
        break;
    }
    case type2:
    {
        break;
    }
    default:
    {
        break;
    }
}

for (statement)
{
}

注:控制流的括號建議不要省君纫,如果代碼很少可以都放在一行驯遇。但是,不要省略蓄髓。

我是覺得按照Apple自動生成的代碼風(fēng)格作為自己的基礎(chǔ)編程風(fēng)格是個(gè)比較好的習(xí)慣叉庐。

上面就粗略地講了部分基本的,詳細(xì)的既然有很好的版本這里就不贅述了会喝。(我們不生產(chǎn)雞湯陡叠,我們只是大自然的搬運(yùn)工 *_*)
附上幾篇比較好的文檔:
Apple: Coding Guidelines for Cocoa
Google: Objective-C Style Guide
Cocoachina: Objective-C開發(fā)編碼規(guī)范

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肢执,隨后出現(xiàn)的幾起案子枉阵,更是在濱河造成了極大的恐慌,老刑警劉巖预茄,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兴溜,死亡現(xiàn)場離奇詭異,居然都是意外死亡耻陕,警方通過查閱死者的電腦和手機(jī)拙徽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗宣,“玉大人膘怕,你說我怎么就攤上這事∥嗵铮” “怎么了淳蔼?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長裁眯。 經(jīng)常有香客問我鹉梨,道長,這世上最難降的妖魔是什么穿稳? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任存皂,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旦袋。我一直安慰自己骤菠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布疤孕。 她就那樣靜靜地躺著商乎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭阀。 梳的紋絲不亂的頭發(fā)上鹉戚,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音专控,去河邊找鬼抹凳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伦腐,可吹牛的內(nèi)容都是我干的赢底。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼柏蘑,長吁一口氣:“原來是場噩夢啊……” “哼幸冻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辩越,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤嘁扼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后黔攒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趁啸,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年督惰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了不傅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赏胚,死狀恐怖访娶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情觉阅,我是刑警寧澤崖疤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站典勇,受9級特大地震影響劫哼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜割笙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一权烧、第九天 我趴在偏房一處隱蔽的房頂上張望眯亦。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宫静。三九已至,卻和暖如春券时,著一層夾襖步出監(jiān)牢的瞬間囊嘉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工革为, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舵鳞。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓震檩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜓堕。 傳聞我的和親對象是個(gè)殘疾皇子抛虏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • iOS編程規(guī)范0規(guī)范 0.1前言 為??高產(chǎn)品代碼質(zhì)量,指導(dǎo)廣大軟件開發(fā)人員編寫出簡潔、可維護(hù)套才、可靠迂猴、可 測試、高效...
    iOS行者閱讀 4,435評論 21 35
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理背伴,服務(wù)發(fā)現(xiàn)沸毁,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 禪與 Objective-C 編程藝術(shù) (Zen and the Art of the Objective-C C...
    GrayLand閱讀 1,603評論 1 10
  • 春天暖起來傻寂,我該出來運(yùn)動了息尺,畢竟冬眠了三個(gè)月。 我用關(guān)鍵字“上海 跑步”搜QQ群疾掰,跑步群不計(jì)其數(shù)搂誉,還有分地域范圍的...
    大嘴堂閱讀 515評論 0 0
  • 2017年1月5日炭懊,拳王鄒市明的妻子冉瑩穎曬出一張手指被戒指卡住的照片,附文稱“越脫越腫請教萬能的微博達(dá)人們”拂檩。 ...
    珠寶大課堂閱讀 946評論 0 2