专栏首页烟草的香味代码整洁之道小结

代码整洁之道小结

以下总结一些不好的代码规范, 借此警示自己不要犯这种错误

注释

1.不恰当的注释

注释应该仅用来描述有关代码和设计的技术性信息。像修改历史等信息不应出现在注释中

2.废弃的注释

过时、无关或错误的注释就是废弃的注释,不要写这种注释,如果发现了请尽快更新或删除,否则它会越来越远离它开始描述的代码

3.多余的注释

如果代码自身就能说明,就不要去写注释,例如:

i++; // i自增

注释应该说明代码自身没有提到的事情。

4.注释掉的代码

一般注释掉的代码,很可能已经与现有系统无关了,它调用的变量或函数可能已经改名,变得毫无用处

函数和类

1.过多的参数

一个函数的参数个数最好为零,如果有三个以上,可能就要考虑封装了

2.标识参数

如果函数的参数存在布尔值,只会让人迷惑,完全可以将其拆分为两个函数,枚举也是同样的道理

3.死函数

没有被用到的函数,应该尽早删除

4.死代码

死代码就是不会被执行到的代码,它可能出现在不会触发的if语句中,或者不会抛出异常的try catch中。如果找到这样的代码,请尽早删除。

5.垂直距离

变量应该在首次使用的上面声明。函数应该放到首次被调用的下面一点点

6.前后不一致

如果在某个地方把响应对象命名为response, 则在其他地方也应该如此命名。如果把某个方法命名为getCommonModule, 则处理相似事情的方法应该取相似的名字,如:getUserModule。这会让代码易于阅读和修改。

7.错误位置的安放

对于一个函数或常亮的位置,应该放在读者自然而然期待它出现的地方

8.不恰当的静态方法

如果一个方法被命名为静态方法,说明它所需要的变量全部来源于参数,而不是对象的属性,同时也不会用到多态的特性。

当然有些方法命名为静态是有必要的,如:Math.max(a,b), 如果还需要 new Math().max(a,b), 也太蠢了

9.不恰当的函数名

如果看到一个函数名之后,仍然对其意图存在疑惑,甚至还要去查看源码,那么请换个名字吧。

10.错误的抽象层级

编写方法时,很容易想到,函数应该是一层一层往下调用的,不应该出现的层函数调用高层函数的现象,就像是基类不应该依赖于派生类一样。

11.封装条件

在if, while等条件语句中,下面这种写法:

if(shouldBeDeleted(timer)){}

明显要好于:

if(timer->hasExpired() && !timer->isRecurrent()){}

12.隐藏调用顺序

在一个类中,有这样一段代码: 

public function eat(Person $p){
    buyGreens();    
    makeDinner();    
    eatDinner($p);
}

这段代码很好理解,先买菜,然后做饭,最后吃饭。很显然,买菜的时候会对类的菜品属性进行赋值,在做饭的时候使用。但如果他们的调用顺序写错了,就会使用到未初始化的变量。如果改成下面这样:

public function eat(Person $p){
    $greens = buyGreens();    
    $dinner = makeDinner($greens);    
    eatDinner($dinner, $p);
}

这样通过函数,暴露了调用顺序,每个函数都产出下一个函数所需要的结果,这样一来就没理由不按照顺序调用了吧。

本文分享自微信公众号 - 烟草的香味(hujing-bc)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【OCP最新题库解析(052)--题51】 You want to use the ALTER SYSTEM statement

    该系列专题为2018年4月OCP-052考题变革后的最新题库。题库为小麦苗解答,若解答有不对之处,可留言,也可联系小麦苗进行修改。

    小麦苗DBA宝典
  • JSP基础--三大指令

    JSP指令的格式:<%@指令名 attr1=”” attr2=”” %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的。

    eadela
  • 浅谈 DNS

    概念:万维网(WWW是环球信息网的缩写,亦作“Web”、“WWW”、“'W3'”,英文全称为“World Wide Web”),作为域名和IP地址相互映射的一个...

    小麦苗DBA宝典
  • JSP基础--九大内置对象

    Object findAttribute(String name):依次在page、request、session、application范围查找名称为name...

    eadela
  • JSP基础--EL表达式

    JSP2.0要把html和css分离、要把html和javascript分离、要把Java脚本替换成标签。标签的好处是非Java人员都可以使用。

    eadela
  • JSP基础--JSP入门

    JSP(Java Server Pages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。

    eadela
  • JSP基础--javaBean

    JavaBean是一种规范,也就是对类的要求。它要求Java类的成员变量提供getter/setter方法,这样的成员变量被称之为JavaBean属性。

    eadela
  • 推荐收藏 | 100个数据分析常用指标和术语

    有个朋友是金融行业产品经理,最近在对已有的站内用户做分层与标签分类,需要对用户进行聚类分析。一般从事数据分析行业的朋友对这类词并不陌生,但是像市场运营人员就会把...

    石晓文
  • JVM故障分析及性能优化实战(IV)——jstack生成的Thread Dump日志线程状态

    前面文章中只分析了Thread Dump日志文件的结构,今天针对日志文件中 Java EE middleware, third party & custom a...

    IT技术小咖
  • IOS-swift5.1快速入门之旅

    传统表明,新语言中的第一个程序应在屏幕上打印“Hello,world!”字样。在Swift中,这可以在一行中完成:

    eadela

扫码关注云+社区

领取腾讯云代金券