如何写出高质量的Objective-C代码系列

 我来答
神话梦碎
2017-05-23 · TA获得超过8797个赞
知道大有可为答主
回答量:6699
采纳率:0%
帮助的人:3173万
展开全部
1、避免全局变量,因为全局变量容易发生名称上的冲突,可维护性不好。
a,使用命名空间
b,使用闭包
c,在函数内部使用var声明

2、编写可维护的代码
a.可读性
b.连续性
c.预见性
d.看起来是一个人写的
e.有文档

3、不要扩展内建的原型
扩展原型的构造函数,可以提供一些很强大的功能,但是有时候他太强大了。
有时候你会去扩展Object(),Array(),Fucntion()的原型方法,这样会导致可维护性的问题,因为这会让你的代码的移植性变差。其他的开发人员使用你的代码的时候,可能只需要原生的方法,并不需要额外的功能。
另外,你添加进去的方法,如果在循环的时候没有使用hasOwnProperty方法就会被遍历出来,这会让人很迷惑。
所以,最好还是不要扩展基本的对象。除非是下面的情况:
a.你确定在将来根据ECMAScript规范,浏览器会添加相应的原型方法,那么是可以的,你只不过是提前实现了这个功能。
b.你确定的你要实现的方法不存在–或许有时候在代码的其他的地方实现了,或者有的浏览器支持,这都是不行的。
c.有非常清晰的文档,并且与团队成员沟通过

4、避免隐藏的类型转换
Javascript在你比较两个变量的时候会进行类型的转换,这就是为什么 false == 0或者”" == 0会返回true。
为了避免这种隐藏的类型转换带来的迷惑,最好使用===或者!==操作符来比较:

5、避免使用eval()
如果在你的代码中使用eval(),那么要记住”eval() is evil”。这个方法会将传入的字符串当做js代码来执行。如果代码是在运行前就确定的,那么没有必要使用eval()。如果代码是在运行时动态确定的,那么也有其他更安全的办法。例如使用方括号形式访问元素的属性:
// antipattern
var property = "name";
alert(eval("obj." + property));

// preferred
var property = "name";
alert(obj[property]);
使用eval()还有安全问题,比如运行网络上的一段代码,而这段代码又被别人篡改了。在处理Ajax请求返回的JSON数据的时候,最好还是使用浏览器内建的处理方法,如果对于低端的浏览器不支持的,可以从JSON.org上下载对应的处理库。

6、使用parseInt()转换处理数字
使用parseInt()你可以将字符串转为数字。这个方法支持第二个表示进制的参数,常常被忽略。问题常常在处理一段以0开始的字符串的时候。在ECMAS3标准中,以0开始表示八进制,但是在ES5中又改了,所以为了避免麻烦,最好还是标明第二个参数。

7、编码规范
编码的时候遵循一定的规范,可以让代码增强可移植性,并且更加便于阅读和理解。加入团队的新人,在阅读了代码规范之后,可以更加快速的溶入团队,并理解其他人员开发的代码。

8、缩进
代码如果没有缩进,那基本上没法阅读了。比这更糟的是不规范的缩进,看着好像缩进了,但是乱七八糟摸不着头脑。所以缩进的使用必须规范。团队遵循统一的规范

9、大括号
应该使用大括号,尤其在那些可用可不用的地方,如果你的if语句或者for循环只有一句话,那么大括号不是必须的,但是这种时候最好用大括号。这可以让代码保持一致,并且便于升级。

10、命名规范
可以提高代码移植性和可维护性的一个方面是命名规范。也就是说,在取变量名的时候总是采取一贯的做法。

11、写注释
必须给代码写注释,就算它看起来不会被别人接手。有时候,研究完一个问题,然后你看着代码觉得那是显而易见的,但是过一两周之后回头再看,你也会摸不着头脑的。
北京新国信
2023-07-11 广告
性能测试和功能测试是软件测试的两个重要方面。1. 功能测试:主要是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。也可以称为黑盒测试,只需要考虑测试各个功能是否实现,例如游戏的功能测试,首先测试游戏的各个... 点击进入详情页
本回答由北京新国信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式