- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                代码整洁与代码质量研究.doc
                    代码整洁与代码质量研究
  摘要:软件质量不仅依赖于架构及项目管理,而且与代码质量紧密相关。而代码质量与其整洁度成正比。将需求明确到机器可以执行的程度,就是编程要做的事,这种规约就是代码。糟糕的代码可能毁掉一家公司,混乱代码的代价是驱动生产力不断趋向零,整洁不仅与效率有关,而且关乎企业的生存。总结了如何在代码中达到clean code,即整洁和干净代码的经验规则。 
  关键词:代码整洁;代码质量;软件质量;注释;命名;类 
  中图分类号:TP306文献标识码:A文章编号文章编号2013)0010003803 
  作者简介:曹娜(1982-),女,国际商业机器科技(深圳)有限公司上海分公司助理工程师,研究方向为软件开发、Web2.0。 
  1有意义的命名 
  终端用户响应的时间中,有80%用于下载各项内容。这部分时间包括下载页面中的图像、样式表、脚本、Flash等。通过减少页面中的元素可以减少HTTP请求的次数,这是提高网页速度的关键步骤。 
  减少页面组件的方法其实就是简化页面设计。那么有没有一种方法既能保持页面内容的丰富性又能达到加快响应时间的目的呢?这里有几条减少HTTP请求次数同时又可能保持页面内容丰富的技术。 
  1.1名副其实 
  要严肃对待这个问题。在起一个表意的名字上花时间是值得的,优秀程序员从细节做起。如果名称需要注释来补充,那就不是“名副其实”。 
  反例: 
  int d;//消逝的时间,以天计算 
  范例: 
  Int elapsedTimeInDays; 
  Int daysSinceCreation; 
  Int daysSinceModificatin; 
  Int fileAgeInDays; 
  以上问题不在于代码的简洁度,而在于代码的“模糊度”。再简短的代码,如果不能表达含义,也不能做到“名副其实”。下面反例中所示的代码够简单了,但是没人知道 theList是什么东西、theList[0]的意思是什么、4是什么意义、以及返回list1该怎么用。这就是 “模糊度”,因为意义比较模糊,所以这些代码也不“名副其实”。应该根据这段代码的意图来修改这里的函数名、变量名、值(4)的含义(用常量)。 
  反例: 
  Java: pulic List getThem(){ 
  List list1 = new ArrayList(); 
  For( int x: theList) 
  If(x[0]==4) 
  list1.add(x); 
  return list1; 
  } 
  1.2命名要避免误导 
  程序员必须避免留下掩藏代码本意的错误线索。如:accountList这个名字就不太好,因为list这个词在Java中是一个类型,如果这个名字表达的类型或者含义不是list就不应该这样命名。 
  1.3做有意义的区分 
  (1)不要用数字命名,如:a1,a2,a3。某些特定的以数字命名还是可以的,比如byteArray2String。这里2同“To”。但一般在名称后接数字是不好的习惯。 
  (2)废话是另一种没有意义的区分。如:有一个类叫Product类,那么ProductInfo与ProctductData就是没有意义的区分,因为它们含义几乎一样。如果约定Product是实体类,ProductInfo是纯数据,那么还是有意义的,可以接受的。但是同时还存在ProductData就明显不好了,并且这样还是增加了一些理解成本,因为从名字上无法直接判断。nameString不比name好,原因很简单:name就其含义来说其类型一定是字符串,所以String是冗余的废话。这种程度的冗余笔者认为还是可以接受的,但是不能又出现nameStr、strName、string_name等。如果出现,说明命名规则有问题或者命名规则的执行有问题。 
  (3)使用可以读出来的名字。 
  (4)使用可以搜索出来的名字。比如数值型常量,可以起一个有意义的名字便于搜索。另外,一个好的名字往往可以更加准确地表达常量在特定场景里的含义。 
  (5) 匈牙利命名法。匈牙利命名法基本上没有必要使用,主要理由是它的长处在消减,而短处却十分明显。长处减弱:现代的编译器已经智能了,完全可以无视类型的作用。但是对于弱类型的javascript来说,还是有其必要的。理由是因为它是弱类型,而为了避免类型转换自由带来的bug,保持类型前后缀还是有其作用的,这类类型前缀除了类型语义之外还有对其用法的约束。如果是纯粹的表达类型,那么大量的前后缀毫无疑问将对阅读带来障碍。弱点:冗余。除了冗余之外,匈牙利命名法还有致命的缺点:就是变化可能使类型加入命名带来“副作用”:比如 phone
                
原创力文档
                        

文档评论(0)