<b>四个有害的Java编码习惯</b>[Java编程]
本文“<b>四个有害的Java编码习惯</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
程序中的编码气势让我们的编程工作变得轻松,分外是程序保护员,他们要常常阅读其他人编写的程序编码,这一点特别突出.编码标准从根本上办理了程序保护员的难题;标准的编码阅读和理解起来更简单,也可以快速的不吃力气的借辨别人的编码.对将来保护你编码的人来说,你的编码越优化,他们就越喜好你的编码,理解起来也就越快.
一样,高水平的编码气势(比方固定的封闭构造)目的在于改进计划和使编码更易于理解.事实上,最后有些人会认为改进计划和提高编码的易读性是一回事.
本文中你会看到一些风行的编码气势被面向读者的更易于承受的气势所替换.有人争辩说这些气势都已经被大家遍及利用,不该该简单的为了到达读者的盼望而丢弃.但是,读者的等待只是此中一方面的缘由,不大概凌驾于全部因素之上.列出四种常见的问题:
1.对局域变量(local variables)、参数(method arguments)、字段(fields)这三种变量的命名没有辨别:
对看编码的人来说,首先要弄清这些数据若何定义的?看一个类时,得弄清楚每个条目是局域变量?字段?还是参数?有必要利用一个简单的命名约定来定义这些变量,增添易读性.
很多声望机构标准过字段变量用以辨别它与别的的变量,但这远远不够.可以把对字段的公道的命名约定逻辑也利用在参数上面.先看示例1:没有举行辨别这三种变量的类定义,以下所示:
示例1:
public boolean equals (Object arg) {
if (! (arg instanceof Range)) return false;
Range other = (Range) arg;
return start.equals(other.start) && end.equals(other.end);
}
在这个办法中,arg直接用argument的缩写,固然大家一看就知道这是参数了,但这种命名方法却丧失了参数代表的对象本身 的含义.大家知道这 是参数,却不知道这是什么参数.假如办法的参数多一点,都按照arg1,arg2这样的方法命名,阅读代码 的时刻很头疼.别的两个字段变量,start和 end,忽然凭空而出,想一下才知道这应当是字段.当然,这个办法很短,造成的艰难还不大,假如这个办法对比长的话,忽然看到start和end两个变 量,普通会先在前面找一下是不是部分变量,然后才能肯定是类的字段变量.
这个问题貌似微不足道,但为什么要让代码阅读者耗费额外时间在这些琐碎的问题上呢?假若有个筹划能让代码阅读者一目了然的懂得变量是那种变量,为什 么不采取呢?就好像Steve McConnell在 《代码大全》中说的:"让人费心去琢磨奥秘杀人凶手这没有问题,但你不需求琢磨程序代码,代码是用来阅读的.
接下来看示例2,利用命名约定后对示例1重写今后的代码,用到的命名约定有:
参数定义时名字加前缀a
字段定义时名字加前缀f
局域变量定义时不加任何前缀
示例2:对变量范例举行辨别
public boolean equals (Object aOther) {
if (! (aOther instanceof Range)) return false;
Range other = (Range) aOther;
return fStart.equals(other.fStart) && fEnd.equals(other.fEnd);
}
你大概反对示例2中的气势,反对过期了的匈牙利标记,但是我认为反对是错误的,因为匈牙利标记能具体阐明信息的范例.
上面的命名约定辨别了范例.并且这样做分清了字段、变量和局域变量,这是两种完好差别的概念.
这种命名约定的方法并不像看起来那么微不足道:当这些约定用在程序编码中时,会大大降低理解的难度,因为你可以不需
要先辨别这些变量,省去不少时间.
以上是“<b>四个有害的Java编码习惯</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |