如何写一手艺术代码

内容参考《码出高效》《代码整洁之道》

·本文是本人原创,有什么问题请给我留言。

一:关于命名规则

  1. 第一条规则:不管是变量名还是方法名还是类名,一定要语义化,不要故作聪明的添加一些无关紧要的修饰。
  2. 命名避免有歧义,也就是说有歧义的单词不要使用,特别是和体统相关的。
  3. 类的命名,使用名词最佳,方法的命名使用动词最佳。
  4. 类名大驼峰,方法名小驼峰,变量也要遵循小驼峰。
  5. 常量全大写单词分割用下划线。
  6. 包名用小写且分隔符,只有一个自然语义单词,包名统一使用单数形式,但是类名如果有复数的意思可以用复数。
  7. 抽象类命名以Abstract或者Base开始,异常类以Exception结尾,测试类以测试类名开头,以Test结尾。
  8. 类型与中括号紧挨来定义数组。
  9. 枚举类以Enum后缀,枚举成员变量全部用大写,单词用下划线分割。

二:关于函数

函数最佳的规范是尽量短,应当尽可能的遵循单一职责原则。一个函数只管一件事,是高内聚的表现,在修改的时候能够避免冲突的问题。其次,精简短小的代码,读起来会很舒服,比方说一个函数两百行代码,如果隔很长时间的话,自己读起来都会头疼,有一种自己打开都想关掉的冲动,让别人读起来,岂不是更有杀了你的冲动。最佳的长度是尽量的控制在20行以内,为佳(这个说法来自《代码整洁之道》)。

关于方法的行数问题,在《码出高效》中指出尽量不要超出八十行;

分割指令与询问,也就是说,要么函数做什么事,要么函数询问什么事,不要混合在一起。混合在一起也容易有歧义。

如果过可以的话,将try ,catch里边的代码抽离出来。另外形成函数,这样就只做一件事,。

 

三:关于参数

  其实参数是越少越好,没有参数最好。因为在测试的时候,参数多了,就有不同的组合情况,那么找到一个合适的测试用例就会很困难。

四:关于缩进与空格换行

  大所数是使用四个空格,但是一般我们使用的环境都支持将Tab键指定为四个空格,与团队一致的编发格式,是有效进行团队协作的一种方式。

  空格:

一个良好的编程习惯,会看着很舒服,因为我们都是与代码打交道的,与人方便自己方便。

如下的代码。

换行:

五:关于控制语句

1.If  else  for  while  do-while 等语句中必须使用大括号。即使只有一行代码,也要加上大括号。

  2.在条件表达式中不允许有复制操作,也不允许出现复杂的逻辑组合。

  多层嵌套不能超过三层,对于超过三成嵌套的代码,可以使用卫语句,策略模式,状态模式等,来实现。

  卫语句:

  1. 避免使用取反逻辑运算。

六:关于注释

很多人会忽略掉注释的重要性,其实不然,即使是我们自己写的代码,三个月以后再看,也会感到陌生,更不用说给别人看。

 

所以一定要有注释的习惯,注释一定要精简,既要表达出全部的意思,也要精短。还有就是要保证注释的及时性,修改了代码以后,一定要有注释,做正确的引导。

注释规范:

  注释掉的代码,最好删除掉,这是给注释代码的本人说的,因为以后有人读到,不知道到底有没有用,可能会由此,被注释的代码成为垃圾一直存在。

  最后,注释不是想说什么就说什么,更不是应付乱写,是为了方便别人看,方便自己阅读的,指出意图,给出应有的提示信息,希望今后别人能够通过简短注释,减少对你写的代码块的理解,并且是正确的理解。

七:良好的代码格式

  一个良好的规范的代码格式,会让人读起代码更舒服,更够层次感。

  比方说垂直格式(可以理解为换行),合理的使用换行,会减少我们的视觉疲劳,同时对于我们理解代码逻辑有帮助,并不是说换行就好,换行就美,而是将逻辑相关的代码放在一块,一旦逻辑不相同了,我们可以采用换行隔离的方式,来提高代码的可读性,我们会发现,这么做并不是盲目的,也不是展现个性。围绕一个出发点,就是代码的可读性,一切为以后方便着想,这是一种未雨绸缪的做法。

  对于变量的声明,应该尽可能的放在靠近使用的地方。因为函数很短,本地变量应该放在函数的顶部出现。

  对于实体变量的声明,我们应该放在类的顶部,否则,放在中间,会让人感觉很突兀。

  对于函数,应该尽量的做到,将被调用的函数放在调用者的后边,并且尽可能的放在一快,也就是说紧挨着。

  对于概念相关的代码,应该尽可能的放在一块。相关性越强,距离越近。

八:关于对象和数据结构

  隐藏实现并非只是在变量之间加上一层函数那么简单。隐藏实现关乎抽象,类并不简单的采用取值器和复制器将变量推向外间,而是暴露抽象接口,以便用户无需了解数据结构,就能操作操作数据个体。

  数据,对象的反对称性。对象把数据隐藏于抽象之后,暴露操作数据的函数。数据结构暴露其数据,没有提供有意义的函数。

  思考:我们作为程序员在编程的时候,一定要有未雨绸缪的做法,不能把功能局限于眼前的实现,更应该思考今后的思考,以后如何扩展,如何修改,以后怎样扩展方便,当下就如何编程。这是一个好的习惯,也是我们应该有的职业素养,带着远詹的态度,会让你走的更远。更多关于代码的设计技巧,我推荐《设计模式精解及面试攻略》这本书。熟悉设计模式,可以帮助我们写出好的代码。

  对象与数据结构之间具有二分原理:过程代码便于在不改动数据结构的前提下添加新函数,面向对象代码便于在不改动函数的前提下添加新类。

  德墨忒尔律:类C的方法f只应该调用以下对象的方法:C  ; 由f创建的对象 ;作为参数传给f的对象; 有C的实体变量持有的对象。方法不应该调用任何函数返回的对象的方法。

  方法最好不要返回空值,参数最好不要传递空值,因为空值是需要检验的,如果哪个地方没有检验,就会引发异常。

九:关于类

  类应该从一组变量列表开始,如果有公共静态常量,应该先出现,然后是私有静态变量,以及私有静态变量,以及私有实体变量。

  公共函数应该在变量列表之后,把公共函数调用的私有工具函数紧随其后。

  就像对函数的要求一样,也要求类的长度短。

  要求类遵循单一权责原则。单一职责的好处有:在修改的时候,其他的类对当类的依赖就会少。(单一权责原则SRP)

  保持类的内聚。

  比方说有这样的一个类,里边关乎查询操作,修改操作,因为这个类会被频繁的使用,就是其他类对当前类的依赖性会很高,我们一旦有了修改当前类的需求,要修改的时候,我们就要考虑会不会对其他的类产生影响。那么怎样做比较好呢?将当前类修改成抽象类,相关的修改操作,查询操作都可以用继承类的方式来实现,这样既遵循单一职责原则,又遵循开放封闭原则。

十:关于迭进

简单设计规则:

  1. 运行所有测试

   在遵循了单一职责原则以后,测试就会变得格外轻松。运行所有的测试,会减少问题的出现。

  1. 不可重复

  完全相同的代码叫做重复,意思相近的代码叫做重复,可以改成相同的代码也叫重复。

  1. 表达程序员的意图
  2. 尽可能的减小类和方法的数量

 

  尊重代码的艺术,这是程序员的一种修养,不要在代码完成功能以后就马上进入下一个模块,要做到上一个模块的代码足够的完善,包括详细的注解,因为在首次开发阶段,是最熟悉逻辑和功能的时候,如果这个时候不将代码详尽完善,那什么时候更合适呢,下一个读代码的很可能就是自己,别成为自己口中常骂的傻子。·

 

更多关于开发规范的可以阅读《阿里巴巴java开发手册》(2018年出版)

链接:百度网盘链接地址 
提取码:994j 
 

下边是手册的一个小目录,真的很详细

因为粘贴过来排版会很难看,所以想看的话我还是建议自行下载PDF格式的文件,很小。

可以感受一下大厂的代码规约,还是有一定道理的。

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值