【端-iOS】给iOS开发入门者编码的一点建议
规范编码可以提高代码的可读性,降低维护成本。作为一个程序员,要对自己写的代码负责,虽然bug无可避免,但是写代码时最基本的编码规则还是应该遵守的,否则不是坑自己就是坑别人,因为代码肯定是要维护的。
下面我主要讲一下从建项目到开发写代码时应该注意的一些地方和自己的一点建议。
- 项目名称:项目名字的英文或者拼音全拼形式(如果比较长也可以选择缩写),建议每个单词或者拼音的首字母都大写。
- Bundle Identifier:唯一标识符,最好包含公司的名字和项目名字,我一般用的格式为:www.公司名称或缩写.项目名称.www,已经被别人在开发者证书中心注册过的Bundle Identifier就无法再次添加到自己的证书中心,所以带上公司名和项目名可以防止用了已经被占用的Bundle Identifier。
- 目录结构中的文件夹命名:在用xcode开发时,左边的项目目录结构用的比较多,也是一个很关键的地方,所以建议这里的文件夹目录能放的比较有层次,这样在找代码和修改代码的时候方便。文件夹的名字应该与文件夹中所放代码的作用或者所属模块相关联,名字可用英文或者拼音缩写,首字母大写,中文也是可以用的,但是我个人不建议用中文,原因大家都懂。文件夹可以含多层,比如首页模块的功能,第一层可以是Home文件夹,然后在这个里面可以再细分视图、数据、交互等。另外有些人也有习惯给代码中的文件夹加上统一的前缀,这也是可以的,看上去也很舒服。
- 类名:建议带上固定的前缀和相应的后缀,在二者之间填上类所实现的功能。先来说固定的前缀,比如说AFNetWorking,这个第三方库,类名都是以AF开头的,我们自己写的类名也可以,这个前缀可以用项目名字的首字母缩写、公司名缩写或者任何你喜欢的字母组成,加这个前缀有两个好处,一个项目目录整齐,还有一个就是项目中的模块拿到别的项目中使用可以很大程度上降低类名相同而造成不能直接使用的概率。相应的后缀指的是此类所属的类型,比如如果此类为ViewController的子类,那么类名可以以ViewController或者简写成VC来结尾,这样这个类是个ViewController还是个view一目了然。中间为此类要实现的功能相关是为了看类名就能知道这个类是干什么用的,比如MMHomeViewController这个类名,MM为项目名称缩写,Home代表首页,ViewController表示该类为一个视图控制器,一看这个类名就很容易知道这个类中写的是首页的实现的代码。有一些继承自NSObject类的单例可以以Manager为后缀。类名首字母大写。
- 成员变量:最最基本的应该见名知意,最好有变量对应的类型的后缀,首字母小写。比如loginButton,这样就很好理解,一看就知道这代表一个登录按钮。成员变量是整个类都能用的,如果起名很随意,代码理解起来可能比较困难。首字母小写,遵守驼峰规则。
- 局部变量:同上需要见名知意,虽然存在的范围小,但是也很影响阅读性,千万不要取什么arr1、arr2之类的,很难知道里面放的是什么。首字母小写,遵守驼峰规则。
- 代理/协议名:该协议对应的类的类名+Delegate/Protocol,首字母大写。
- 方法名:每个参数前的英文块首字母小写,遵守驼峰规则。方法名以该方法所实现的功能为主,所需参数的参数名最好能带上该参数的类型,这样调用起来方便,看方法名可知在哪儿用,看参数名可知所需什么参数。
- 注释:在这里特意加上注释,其实并不是要谈注释的规范,而是想说,命名不会规范的程序员在写代码的时候记得多写点注释,绝对没坏处!!!
最后说一下自己的亲身体验,接手过一套代码,类名随便取,很多继承自ViewController的视图控制器都以view结尾,变量名更不用说,看代码的时候还得靠猜这个变量里面放的是什么。记得印象比较深的是,在一个单例类中有一个type变量,看调用的地方挺多,有设置为1的,有设置为2的,也有拿来做判断条件的,完全不知道这个值的意义是什么。跟写代码的人沟通,他自己也忘记掉了,也不知道用的地方为什么那么用。这只是印象比较深的一个,他唯一的说辞是他自己开发技术太菜。但是我觉得,编码是否规范与技术水平高低关系不是很大,代码风格更多的是反映一个程序员的编程习惯的态度。实在不会规范,那就加注释,简单的注释一下变量是用来干嘛的等等。
编程技术水平有高低,但是认真的态度不该有差别,一个程序员可以写不出很炫很酷很牛的代码,但是千万不要随意的写出难以阅读和维护的代码!
这些规范也是我自己的一些小总结,希望能给刚入门的一些人一点提醒和帮助。
【端-iOS】给iOS开发入门者编码的一点建议的更多相关文章
- iOS混合应用开发入门
原文出处: cocoacontrols 译文出处:魏志峰(@JeremyWei) 欢迎分享原创到伯乐头条 http://blog.jobbole.com/46554/ 介绍 上周(译者:原文成 ...
- iOS - 初学iPad开发入门
iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...
- iOS组件化开发入门 —— 提交自己的私有库
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...
- 一看就懂的Android APP开发入门教程
一看就懂的Android APP开发入门教程 作者: 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤 ...
- IOS开发入门实例
关于如何创建第一个 iOS 应用 本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程. Technologies(技术 ...
- iOS开发入门教程
iOS开发入门教程 http://my.oschina.net/mailzwj/blog/133273 摘要 iOS开发入门教程,从创建项目到运行项目,包括OC基础,调试,模拟器设置等相关知识. iO ...
- Apple官方IOS开发入门教程[v0.2]
今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...
- iOS开发入门
https://github.com/qinjx/30min_guides/blob/master/ios.md 任何C源程序,不经修改,即可通过Objective-C编译器成功编译 Objectiv ...
- IOS开发入门教程-总结篇-写给狂热的编程爱好者们
程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一 ...
随机推荐
- 关于VS2017安装的一点扩充说明(15.5)
其实逆天不推荐自己慢慢离线,找个离线包更新下再打包更快 Key:http://www.cnblogs.com/dunitian/p/4667038.html VS完整卸载工具:https://gith ...
- [经验分享]WebApi+SwaggerUI 完美展示接口
不喜欢说废话,直接上干货. 第一步: 打开VS IDE ,新建一个WebAPI项目 选择Web .Net FrameWork (如果喜欢使用.Net Core的可以使用.Net Core) 选择Web ...
- 基于阿里云的JavaEE系统框架介绍
基于阿里云的系统框架展望 1) CDN 用于缓存静态文件等等.七牛和阿里的都还可以. 七牛要做的久一点,各种图片处理的接口要完善一些 阿里的CDN要稍微好一点点,但是没有不安全的访问方式,访问稍微没有 ...
- NFS : device is busy
unmount [ options ] -f : Force unmount (in case of an unreachable NFS system). -l : Lazy unmount. D ...
- Python中将函数作为另一个函数的参数传入并调用
在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用 在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除, ...
- iOS 关于退出键盘两种方法和避免遮挡
退出键盘: 方法1:不使用代理,直接使用: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self.textFi ...
- 第八章:Python基础の面向对象(二)
本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...
- Pyqt4的对话框 -- 文件对话框
文件对话框允许用户选择文件或文件夹,被选择的文件可进行读或写操作 # QInputDialog 文件对话框 # 本示例包含一个菜单栏,一个状态栏和一个被设置为中心部件的文本编辑器. # 状态栏的状态信 ...
- 【二分图】洛谷P2055假期的宿舍
题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识. ...
- Python多线程编程(第二篇)
一.Python中的上下文管理器(contextlib模块) 上下文管理器的任务是:代码块执行前准备,代码块执行后收拾 1.如何使用上下文管理器: 如何打开一个文件,并写入"hello wo ...