又開(kāi)始看直播了,之前葉孤城他們的直播暫停了,但現(xiàn)在是趣直播了,昨天聽(tīng)了沒(méi)故事的卓同學(xué)講的iOS開(kāi)發(fā)中提高代碼質(zhì)量的10件事,特此記錄下。
- 1、為什么要重視代碼質(zhì)量
- 2、代碼質(zhì)量不等于 性能
- 3、不要寫重復(fù)的代碼(Don’t Repeat Yourself)
- 4、一段代碼不要超過(guò)一定的長(zhǎng)度
- 5、注意項(xiàng)目中的目錄結(jié)構(gòu)
- 6、注意命名規(guī)范
- 7、注意代碼格式,空格、tab鍵
- 8、Code Review
- 9、添加斷言 Assert
- 10、注釋的多和少
1、為什么要重視代碼質(zhì)量
言簡(jiǎn)意賅: 為了后期更好的維護(hù),畢竟維護(hù)的時(shí)間永遠(yuǎn)是大于開(kāi)發(fā)的時(shí)間。
想想有時(shí)一個(gè)小錯(cuò)誤,經(jīng)常都是花費(fèi)那么一整天....
2、代碼質(zhì)量不等于 性能
這是對(duì)高質(zhì)量和性能做一些區(qū)別
-
代碼的質(zhì)量并不等于
- 性能最好
- 最精簡(jiǎn)
- 最易實(shí)現(xiàn)
-
理解為更好維護(hù)會(huì)更合適些:
- 易于理解,邏輯性強(qiáng)
- 可讀性高
- 方便擴(kuò)展
整體來(lái)說(shuō),代碼質(zhì)量還是為了更好的維護(hù)。
3、不要寫重復(fù)的代碼(Don’t Repeat Yourself)
這句話可是經(jīng)典中的經(jīng)典,但就像卓同學(xué)說(shuō)的那樣真的落實(shí)了,反正我是沒(méi)有....
其中卓同學(xué)提到的細(xì)節(jié)點(diǎn)抽取,是我平常沒(méi)注意的,例如:相同的約束長(zhǎng)度確實(shí)可以提取。
但有時(shí)趕進(jìn)度,確實(shí)會(huì)直接進(jìn)行復(fù)制粘貼的操作,因?yàn)闀r(shí)間啊,但話又說(shuō)回來(lái),進(jìn)度和質(zhì)量的保證其實(shí)也是自己水平的體現(xiàn)。
4、一段代碼不要超過(guò)一定的長(zhǎng)度
卓同學(xué)的提示,我知道了:
- 人腦一次只能記住7±2個(gè)數(shù)字
所以呢,一個(gè)函數(shù)里的步驟不要超過(guò)7步,但實(shí)際上一般超過(guò)5步就很多了吧...
5、注意項(xiàng)目中的目錄結(jié)構(gòu)
這個(gè)呢,我個(gè)人感受時(shí):
- 大家可以更快找到我們需要的文件
- 也容易養(yǎng)成好的習(xí)慣,知道添加新文件在什么地方放
特別是當(dāng)團(tuán)隊(duì)人多了后,感覺(jué)會(huì)更深刻。
6、注意命名規(guī)范
駝峰法、匈牙利立法,這個(gè)倒有一些,但是一個(gè)核心規(guī)則應(yīng)該是讓他人一下子就知道你這個(gè)變量或這個(gè)方法是干嘛的
能不省略的還是不省略,是為了后期啊
7、注意代碼格式,空格、tab鍵
其實(shí)這個(gè)我個(gè)人還真注意的,可以稍微對(duì)比下:
@property (nonatomic, copy) NSString *userid;
+ (NSDictionary *)modelCustomPropertyMapper {
return @{
@"url" : @"url",
@"version" : @"version"
};
}
@property(nonatomic,copy)NSString*userid;
+(NSDictionary *)modelCustomPropertyMapper {
return @{@"url" : @"url",@"version": @"version" };
}
確實(shí)就如排版一般,自己舒心,大家也舒服。
8、Code Review
對(duì)于Code Review,我們團(tuán)隊(duì)還沒(méi)有進(jìn)行,但聽(tīng)完卓同學(xué)講后覺(jué)的真是很重要的。
記得剛開(kāi)始的時(shí)候,我很不好意思把自己的代碼給人家看,怕別人的挑刺,也是對(duì)自己的沒(méi)信心,后來(lái)有一次和我們組長(zhǎng)交流后,特別指出一些問(wèn)題后,發(fā)現(xiàn)這是對(duì)個(gè)人一種很好的學(xué)習(xí)方式。
代碼互相看,不僅能保證基本的代碼風(fēng)格差不多,更是減少bug的好方法。 上次,我同事看我某個(gè)類的代碼,一下子就發(fā)現(xiàn)好幾處沒(méi)用的代碼... 當(dāng)然也是自身比較菜的原因咯。
畢竟對(duì)于個(gè)人:
- 沒(méi)有人能保證自己所有的代碼沒(méi)有bug
- 沒(méi)有人能保證自己所有的代碼實(shí)現(xiàn)是最優(yōu)的
話說(shuō),應(yīng)該和我們組長(zhǎng)說(shuō)一下這個(gè)事啦!??
9、添加斷言 Assert
一種預(yù)防措施,特別是對(duì)于公共使用的方法,我們無(wú)法保證他人使用傳什么值,怎么用....
就好比經(jīng)常做的容錯(cuò)處理,后臺(tái)傳過(guò)來(lái)的值不一定是對(duì)的...
10、注釋的多和少
越多越好 VS 越少越好,確實(shí)是不好說(shuō)的,個(gè)人偏向越少越好,畢竟代碼的清晰度就應(yīng)該讓他人看懂我們的意思,如果看不懂只有兩種情況,一種是對(duì)方水平不行,要么是自己技術(shù)還不到家。
當(dāng)然有一些注釋還是不能少的,例如針對(duì)性說(shuō)明,標(biāo)記啊,解釋某種很反常規(guī)的需求.....
結(jié)束
以上就是這次直播我的筆記,非常感謝沒(méi)故事的卓同學(xué)的分享。另外備注下,卓同學(xué)的結(jié)束語(yǔ),很有范!
風(fēng)之積也不厚,則其負(fù)大翼也無(wú)力。
故九萬(wàn)里,則風(fēng)斯在下矣,而后乃今培風(fēng);
背負(fù)青天而莫之夭閼者,而后乃今將圖南。
蜩與學(xué)鳩笑之曰:“我決起而飛,槍榆枋而止,時(shí)則不至,而控于地而已矣,奚以之九萬(wàn)里而南為?”
適莽蒼者,三餐而反,腹猶果然;
適百里者宿舂糧,適千里者,三月聚糧。
之二蟲(chóng)又何知?
《逍遙游》