作为一个苦逼的程序员,因为种种原因经常需要阅读别人写的代码。您是否有因代码杂乱冗余而心生厌恶,您是否有过因代码晦涩难懂而抓狂,您是因代码低级的逻辑错误而愤概,您是否因代码结构不合常规而需要到处查找,您是否因看到几百甚至上千行代码的方法而望洋兴叹,您是否因代码缺少注释而猜测以及花很多时间去理清楚前后逻辑。苦逼的我全部遇到过并且很多很多。
相信您也遇到过。这些人有一些共性,应付任务,个性十足以及不思进取!如果您是程序员菜鸟,那么您一定遇到很多并且既是肇事者又是受害者,这是必经之路;如果你是业界大牛,不用说您眼里别人的代码都或多或少都有问题,遇到的情况更多!
都说代码是程序员的第二张脸,写了太烂的代码背后一定会遭人鄙视。请遵循一些简单的规范,写干净一致的代码!
请把您的个性用在写出最简单易懂的代码上面,而不是晦涩冗余无用的代码!您的才华应该表现在设计良好的结构和模式,表现在干净易懂的代码,表现在对空间的尊重,对代码的尊重。请记住代码不是一次性的,需要重复的修改和重构!
以下我总结几点最基本的小规范:
1. 写干净整洁的代码,请尊重空间,请尊重人眼的偏好
1.1 不要吝惜废弃的老代码,有些人对待已经废弃的老代码比对待自己的老婆还宝贝,大量运用注释来保留,随 着代码的演变暂用非常大量的空间。如果那段代码非常精妙,舍不得删,那么请把它移到您的私人代码库。
1.2 请不要写冗余无用的代码。if(true)之类的代码块完全不应该出现,用空行隔开该段代码是更好的选择。
1.3 请合理运用空行。空行可以用来隔开相对独立的代码块,有利于阅读和理解。
1.4 请不要在两个地方出现完全相同的代码,您总是可以想办法重用的,不是吗?
1.5 命名类,方法,变量慎用简写,除非大家都公认。全称我都不一定看得懂,简称您太高估我的智商了!请问ycyp代表什么,可能火星人知道吧!
1.6 把所有的类变量放到最前面,如果比较多请按用途分组排列,不要把变量散落在大江南北,我找的真的很辛苦!
1.7 拆分大的类,大的方法,如果您的类有一万行,如果您的方法有一千行,我真的会恐惧,是恐惧!
2. 高效运用注释
2.1 规范的注释类信息。包括文件名,日期,作者,版本号等信息,用统一的模板。千 万别把您的大名散落于方法签名甚至于具体代码里面了。我在读业务逻辑的时候没有兴趣思考您的人生!要找您我可以在类签名里面找到的,放心啊!
2.2 方法都需要注释,您总不会要别人读您的代码才能调用您的代码吧!即便您的英文非常好,命名也非常规范,您总不能期待别人都英文好,理解都一样吧。
2.3 为不容易理解类变量注释。类变量特别是私有的类变量没有人要求注释,但是为了能够快速的了解您表示的是什么,还是写点什么吧!您知道我英文不算好!
2.4 注释代码段,注释逻辑选择。上面提到运用空行分割开逻辑相对独立的代码,那么请在空行的下一行也写点下面代码段要干什么的语句吧。 如果有if else等逻辑选择的时候,麻烦也花几秒钟写上判断的依据和结果好吗?逻辑难懂且关键,您懂的!
3. 不断学习,不断思考,不断实践,更上一层楼
3.1 遇到不懂的,请先google,一定要学会,不然就一直不会了,回头发现工作六七年没有工作两年的小朋友懂的多!
3.2 看别人代码时要汲取好的方法和技巧。
3.3 接触一项技术要升入了解和实践,请问您做过的系统您现在都可以从零开始搭建起来了吗,我的意思是架构搭建哦!
3.4 书里面有知识,有思想,有时间的话还是多精读几本经典书籍吧。您会受益匪浅!
4.一屏原则:一个方法体的代码幅应该在一屏比较和合理;逻辑复杂的代码可以抽离出方法体;
5. 不要僵尸代码、面条代码;假数据或过于冗余的代码可以清理一下;一些已经注释掉的代码可以删除;
6.代码走查注意事项:
6.1不变的值,尽量写个常量类
6.2尽量使用if{}else,不要一直if去判断
6.3减少循环调用方法查询数据库;减少IO流的消耗资源;
6.4条件判断:三元运算;
7.好的代码,应当具有一些特点:
- 逻辑简单:最直观,最容易理解,最合逻辑的方案,一般是最好的方案。
- 易扩展:封装住可能的变化。
- 模块化:对模块外是黑盒。
- 单一功能:不做分外的事。高内聚。
- 易调试:容易定位问题,修复程序。有详细的日志。
- 高扇入低扇出:仅作为参考。
注释:逻辑简单应当是最重要的特点,因为简单直接,大家(包括自己)都能理解。因此容易调试,容易排错,也容易编写, 不 易出错。逻辑简单和代码量没有关系。
8.尽可能地写出最简洁的代码;如果代码后期会因为改动而变得凌乱不堪就得重构;尽量删除没用的代码,并添加注释。
9.牛逼的程序员有个不怎么对外说的秘密:去更多地看代码,看优秀的代码。迫不得已才自己去写少量代码。
10.使用逗号隔开字符串输出:字符串连接符(.)可以将单一的字符串传递给 echo 语句进行输出,与之相比,逗号可以实现 echo 语句中字符串的分别输出,这对 PHP 来说是一个性能改善。
11.代码署名:编写或者修改完一个模块或者一个功能,署上名字,一方面增加了自己的责任感。认真对待自己设计,写出优雅 的代码。