iOS开发 | 规范编码的四个意识

2017 年 9 月 3 日 CocoaChina 无夜之星辰

写在前面

网上关于编码规范的文章不计其数,并且大多很优秀,值得学习和借鉴。但我觉得授人以鱼不如授人以渔,具备意识掌握技巧以后写出规范代码是自然而然的事情,所以分享一下自己的一点经验。


如何写出规范代码?


根据我一年多的开发经验总结出这四点:

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)


如果你看了这篇文章后,代码质量有所提升,请随心情打赏一块钱,你们知道的,健身会消耗大量鸡蛋,而一个鸡蛋一块钱,如果能吃到更多的鸡蛋,我肯定会长更多肌肉变得更加强壮,到时候创作出更多更优秀的文章,都是没问题的。


程序猿是不装逼的


作者:无夜之星辰

链接:http://www.jianshu.com/p/fd22e5bbc57d

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


C

C

买买买 iPhone 8购机指南

直击苹果 ARKit 技术

iOS 强大的泛型


登录查看更多
0

相关内容

风靡全球的笔记应用服务提供商 印象笔记(Evernote),截止2014年5月全球注册用户超过1亿,中国区 印象笔记注册用户超过1000万
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
FPGA加速系统开发工具设计:综述与实践
专知会员服务
63+阅读 · 2020年6月24日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
57+阅读 · 2020年4月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
我在知识星球这一年
码农翻身
10+阅读 · 2019年2月28日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
自动文本摘要
AI研习社
21+阅读 · 2018年10月27日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
5年开发老鸟转型人工智能心酸史
算法与数据结构
4+阅读 · 2017年11月13日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
iOS高级调试&逆向技术
CocoaChina
3+阅读 · 2017年7月30日
EfficientDet: Scalable and Efficient Object Detection
Arxiv
6+阅读 · 2019年11月20日
Arxiv
19+阅读 · 2018年5月17日
Arxiv
8+阅读 · 2018年4月12日
Arxiv
6+阅读 · 2018年3月19日
Arxiv
5+阅读 · 2018年3月6日
Arxiv
6+阅读 · 2018年2月8日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
FPGA加速系统开发工具设计:综述与实践
专知会员服务
63+阅读 · 2020年6月24日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
57+阅读 · 2020年4月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
相关资讯
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
我在知识星球这一年
码农翻身
10+阅读 · 2019年2月28日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
自动文本摘要
AI研习社
21+阅读 · 2018年10月27日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
5年开发老鸟转型人工智能心酸史
算法与数据结构
4+阅读 · 2017年11月13日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
iOS高级调试&逆向技术
CocoaChina
3+阅读 · 2017年7月30日
相关论文
EfficientDet: Scalable and Efficient Object Detection
Arxiv
6+阅读 · 2019年11月20日
Arxiv
19+阅读 · 2018年5月17日
Arxiv
8+阅读 · 2018年4月12日
Arxiv
6+阅读 · 2018年3月19日
Arxiv
5+阅读 · 2018年3月6日
Arxiv
6+阅读 · 2018年2月8日
Top
微信扫码咨询专知VIP会员