- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java编码4个坏习惯
John OHanley 的这篇文章列举了四个有害的java编码习惯,并提出了改正方案。
这四个习惯普遍存在于java程序员中,并且已经被广泛接受,大家都习以为常,流毒甚远。
1.对局部变量(local variables),字段(fields),参数(method arguments)这三种变量的命名没有区分,造成了代码的阅读困难,增加了代码的维护成本。
作者举了个例子:
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在 《代码大全》中说的:让人费神去琢磨神秘杀人凶手这没有问题,但你不需要琢磨程序代码,代码是用来阅读的。
作者提出了解决方案:
方法参数用前缀a开始
类字段变量用前缀f开始
局部变量不用前缀
修正后的代码样式应该是:
public boolean equals (Object aOther) {
if (! (aOther instanceof Range)) return false;
Range other = (Range) aOther;
return fStart.equals(other.fStart) fEnd.equals(other.fEnd);
}
这样的代码看起来一目了然,如果你没有一目了然,说明还是习惯问题,习惯养成了就好了。
不过作者的方案里,给类字段变量前面加 f 前缀,如果用代码生成工具生成get,set方法是会比较麻烦。get,set方法中我们不希望出现个f。不过这个问题可以用修改代码生成工具的方式解决。如果这个习惯普遍被java界接受,这些应该都不成问题了。
作者引用了一句名言:
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race. Before the introduction of the Arabic notation, multiplication was difficult, and the division even of integers called into play the highest mathematical faculties. Probably nothing in the modern world would have more astonished a Greek mathematician than to learn that ... a large proportion of the population of Western Europe could perform the operation of division for the largest numbers. This fact would have seemed to him a sheer impossibility ... Our modern power of easy reckoning with decimal fractions is the almost miraculous result of the gradual discovery of a perfect notation.
-- Alfred North Whitehead, An Introductio
您可能关注的文档
- (投资)应知应会40问.doc
- (最新版)《公顷和平方千米》单元练习.doc
- (游记的写法)游上海.doc
- (许)爱心铸就师德魂碑.doc
- -绝对成交话术.doc
- 021交通学院博士招生工作细则.doc
- .2015江苏农商行招聘面试礼仪之仪容篇.doc
- 06北京申论.doc
- 06级音教作曲b.doc
- 002投标书.doc
- 2025四川天府银行社会招聘备考题库(攀枝花)含答案详解(最新).docx
- 2025四川银行首席信息官社会招聘备考题库及完整答案详解1套.docx
- 2025四川天府银行社会招聘备考题库(攀枝花)带答案详解.docx
- 2025四川天府银行社会招聘备考题库(成都)含答案详解(a卷).docx
- 2025四川广元市利州区选聘社区工作者50人备考题库及答案详解(基础+提升).docx
- 2025天津银行资产负债管理部总经理或副总经理招聘1人备考题库含答案详解(典型题).docx
- 2025四川天府银行社会招聘备考题库(西充)附答案详解(考试直接用).docx
- 2025年中国民生银行南宁分行招聘2人备考题库及答案详解(全优).docx
- 2025天津银行高级研究人才招聘备考题库附答案详解(达标题).docx
- 2025大连银行营口分行招聘2人备考题库及参考答案详解一套.docx
最近下载
- 写建议信英语教学课件.ppt VIP
- 广州航海学院2025-2026学年《大学物理B》第一学期期末试题(B).docx VIP
- 电力系统继电保护变压器课程设计.doc VIP
- 唐宋时期市坊制度崩溃与城市商业形态演变.docx VIP
- 地质灾害评估软件:GeoStudio二次开发_(3).地质工程中的数值模拟方法.docx VIP
- 《鹊桥仙-纤云弄巧》课件.pptx VIP
- 实现特定功能的键盘及LED显示 接口课程设计.doc VIP
- 《学术论文投稿指南》课件.ppt VIP
- DBJT15-144-2018 建筑消防安全评估标准.docx VIP
- 汇川INOVANCEMD变频器说明书图文.pdf VIP
原创力文档


文档评论(0)