iOS开发 | 规范编码的四个意识
写在前面
网上关于编码规范的文章不计其数,并且大多很优秀,值得学习和借鉴。但我觉得授人以鱼不如授人以渔,具备意识掌握技巧以后写出规范代码是自然而然的事情,所以分享一下自己的一点经验。
如何写出规范代码?
根据我一年多的开发经验总结出这四点:
1.牢记官方文档推荐的代码规范:CodingGuidelines
2.观察学习别人好的编码风格
3.命名的时候下意识的参考系统的命名方式
4.持续回顾反思与总结曾经写的代码
-
一.牢记官方文档的推荐代码规范
这是最基本的
这个没什么捷径,就是多看多记。
1.官方文档可以看:CodingGuidelines
2.Xcode自带的文档可以看:快捷键cmd+shift+0,然后输入Code Naming Basics
3.如果想随时随地查阅,可以将你觉得重要的部分复制到印象笔记里。
印象笔记还有pocket套装都是比较实用的工具软件,相信每一个开发者都有自己喜欢的一套笔记工具。
放到印象笔记里方便随时随地查看4.打印出来
是的,就是这么简单粗暴,打印出来,放到电脑边,需要的时候就看一下,没事的时候就看一下,寂寞的时候就看一下。
想要学习,总是有N多种办法的问:英语不好怎么办?
答:翻词典。
网上有很多翻译的文章,即使这些文章很优秀,我还是强烈建议你把官方文档的内容认认真真的看一遍。只有看了官方文档,你心里才有底,才不会被带偏。我相信你看了官方文档后再看别人翻译的文章比直接看别人翻译的文章会有更大的收货。为什么?因为当你看了官方文档后,官方文档的内容会在你心中形成典范,这个时候你看那些翻译的文章会自然而然的带着批判的态度,正是这批判的态度让你对那些翻译的文章有更深刻的理解。
-
二.学习别人的好的编码风格
这是最需要贯彻落实的
不管你是看同事的代码,还是看三方库的源码,还是看教学视频的时候你都可以研究下别人的编码风格。
当初看李明杰视频的时候,有一段让我印象非常深刻——
小码哥点评学员的作业,其中对某些学员代码中的一些细节专门拿出来批评:=
的两边没有留空格,//
的后面没有留空格。
还有一些细节,比如说:
一个比较随意的开发者可能是这样编码的:
@property(nonatomic,strong) UIImageView *imageView;
-(void)getData{
}
一个比较注意的开发者往往是这样编码的:
@property (nonatomic, strong) UIImageView *imageView;
- (void)getData {
}
后者只是比前者多了几个空格。我们也不能说第一段代码就不对,只不过,像AFNetworking
、SDWebImage
和MJRefresh
这些优秀框架里肯定不会出现第一段代码风格那样的代码。我们经常说的阅读优秀源码,这些优秀源码的代码风格难道不值得我们学习吗?
-
三.命名的时候参考系统的命名方式
这是最实用的
其实这个也属于第二条:学习别人的好的编码风格,只不过这次学习的对象是Apple。之所以单独拿出来说,是因为这招确实很实用,也是我的“惯用伎俩”。
打个比方,你封装了一个和UIAlertView差不多的弹窗,这个时候要给弹窗按钮的点击代理方法命名,如何命名?你可以先看看UIAlertView中按钮点击回调的命名:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
然后你再依葫芦画瓢:
- (void)orderAlertView:(CQOrderAlertView *)orderAlertView clickedButtonAtIndex:(NSInteger)buttonIndex
是不是很强势?
我第一次写swift的protocol的时候,没有看swift编码规范,就写出了这样的:
protocol CQCollectCellDelegate {
/** cell上的分享按钮点击时回调 */
func tableViewCell(tableViewCell: CQCollectCell, didClickShareButton shareButton: UIButton)
}
我不知道究竟是否规范,但我相信如果不出意外的话是很规范的,因为我参考了系统的:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
直接依葫芦画瓢。后来我请教了一下swift的老司机,他们说我写的确实是规范的,说明这招对于oc和swift都适用。
-
四.回顾与总结之前自己写的代码
这是最重要的
我曾经接手过一个项目,那人16年的代码风格和13年一模一样,当然是一模一样的臭。一个程序员的代码质量没有提升,那他的水平肯定也不会有太大提升,因为他根本不愿意去学习:13年反向传值用的通知加单例,16年还这样干;13创建属性用@synthesize关键字,16年还在这样创建。。。从13年到16年,3年的时间啊,3年的时间你都学不会block?3年时间你都舍不得看一眼苹果文档?到时候你去找工作简历里肯定至少写三年工作经验,但是,如果你这种人敢在简历里写三年工作经验(虽然你是真的工作了三年),培训班里刚毕业的写五年工作经验都不为过。这种人不管工作多少年,只要他还写代码,他就是挖坑,不管谁接手他的代码,都是一场灾难。
我们的进步是建立在过去的自己这个基础之上的,而反思和总结是超越曾经的自己非常实用的手段。如果我们只是一味的敲代码而不回头看看自己敲过的代码,那和搬砖有什么区别?
总结:
窃以为,一个优秀程序员首先要从规范自己的代码做起。
不仅要知道如何规范编码,更重要的是让规范编码成为习惯。
还有就是,敲代码的时候多换位思考。
面对代码,希望你能——
严于律己,宽以待人。
希望每个程序员都能够规范编码,为和谐社会做出一份贡献。
最后(last but not the least)
如果你看了这篇文章后,代码质量有所提升,请随心情打赏一块钱,你们知道的,健身会消耗大量鸡蛋,而一个鸡蛋一块钱,如果能吃到更多的鸡蛋,我肯定会长更多肌肉变得更加强壮,到时候创作出更多更优秀的文章,都是没问题的。
程序猿是不装逼的