规范编码可以提高代码的可读性,降低维护成本。作为一个程序员,要对自己写的代码负责,虽然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开发入门者编码的一点建议的更多相关文章

  1. iOS混合应用开发入门

    原文出处: cocoacontrols   译文出处:魏志峰(@JeremyWei)   欢迎分享原创到伯乐头条 http://blog.jobbole.com/46554/ 介绍 上周(译者:原文成 ...

  2. iOS - 初学iPad开发入门

    iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...

  3. iOS组件化开发入门 —— 提交自己的私有库

    前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...

  4. 一看就懂的Android APP开发入门教程

    一看就懂的Android APP开发入门教程 作者: 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤 ...

  5. IOS开发入门实例

    关于如何创建第一个 iOS 应用 本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程. Technologies(技术 ...

  6. iOS开发入门教程

    iOS开发入门教程 http://my.oschina.net/mailzwj/blog/133273 摘要 iOS开发入门教程,从创建项目到运行项目,包括OC基础,调试,模拟器设置等相关知识. iO ...

  7. Apple官方IOS开发入门教程[v0.2]

    今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...

  8. iOS开发入门

    https://github.com/qinjx/30min_guides/blob/master/ios.md 任何C源程序,不经修改,即可通过Objective-C编译器成功编译 Objectiv ...

  9. IOS开发入门教程-总结篇-写给狂热的编程爱好者们

    程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一 ...

随机推荐

  1. css弹性盒子新旧兼容

    前言:本篇随笔是对弹性盒子有了解的人来写的这篇文章,具体属性产生的效果这里不做说明,基础的东西去查文档.这里只是总结. 时至今日,css3的flex弹性盒子在移动端基本上都是支持的,但不排除有些些低版 ...

  2. swig官方go Examples 源码勘误

    勘误 在官网下载页面(http://www.swig.org/download.html )下载的swigwin-3.0.12包中go示例源码有个错误(swigwin-3.0.12\Examples\ ...

  3. Disruptor并发框架 (二)核心概念场景分析

    核心术语 RingBuffer(容器): 被看作Disruptor最主要的组件,然而从3.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用户( ...

  4. web打印总结

    一.打印样式 区别显示和打印的样式 使用media="print"控制打印时的样式,如下: 打印时不显示打印按钮,设置页面宽度 <style media="prin ...

  5. CS:APP3e 深入理解计算机系统_3e MallocLab实验

    详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...

  6. 动手搭建第一个小程序音视频Demo

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:小程序音视频产品经理 腾讯云提供了全套技术文档和源码来帮助您快速构建一个音视频小程序,但是再好的源码和文档也有学习成本,为了尽快的能调试起 ...

  7. canvas 简易的加载进度条

    做一个web app,想在第一次或者更新的时候,有一个更新进度条,我个人比较喜欢圆的那种. canvas + svg高低配,应该还不错的.顺便一提,canvas用来压缩图片也是么么哒的. 先看下效果图 ...

  8. WPF自定义Window样式(1)

    1. 引言 WPF是制作界面的一大利器.最近在做一个项目,用的就是WPF.既然使用了WPF了,那么理所当然的,需要自定义窗体样式.所使用的代码是在网上查到的,遗憾的是,整理完毕后,再找那篇帖子却怎么也 ...

  9. Java框架之Hibernate(三)

    本文主要讲解: 1 级联 cascade 关键字 2 级联删除 3 inverse 关键字 4 懒加载 5 缓存的模拟 6 Hibernate 的一级缓存 7 Hibernate 的二级缓存 一.级联 ...

  10. 【KMP模板】简单写个KMP~

    本来easy的KMP 却一直过不了洛谷的模板题... 仔细一看原来在输出next数组时打的回车而不是空格... 身败名裂... 话说有个sunday貌似一般状况下比KMP快呢...去看看2333 #i ...