代码整洁之道小结

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

注释

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);
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP的stdClass

概述 以下是百度百科对php中的 stdClass的描述: stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。**stdClass类是PHP的一个内部保留类,初始时没有成员变量也没成员方法,所有的魔术方法都被设置为NULL.**凡是用new stdClass()的…

浮点数的运算精度丢失

引出 打开Python编译器,输入 0.10.2, 期待的结果是0.3,但是输出为: 0.30000000000000004 有点小尴尬,这是为什么呢? 解惑 其实这设计到了计算机的浮点数存储是以二进制进行存储的。 说二进制不太形象&a…

补码到底是个什么东西

概述 先引入一个前提,在计算机中数字是以二进制进行存储的,也就是我们看到的2,在计算机中存储的是10。我们进行的加法运算 213 在计算机中是这样的(这里先假设计算机存储的是4位二进制数字) 001000010011 很容以看的…

揭开HTTPS的神秘面纱

在说HTTP前,一定要先介绍一下HTTP,这家伙应该不用过多说明了,大家每天都在用,每一次HTTP请求,都是一次TCP连接。遗憾的是,请求的内容在TCP报文中是明文传输的,任何人截取到请求都可以读取其中的…

递归函数两种方式的区别

概述 递归函数都不陌生&#xff0c;比如计算n的阶乘&#xff1a; function f($n){if($n < 1) return 1;return $n * f($n-1); } 当然&#xff0c;有人可能会这么写&#xff1a; function f($n, $result){if($n < 1) return $result;return f($n-1, $n*$result); } 上…

Trie树

概述 在Google中随意搜索&#xff0c;如下所示&#xff1a; 他会自动显示相关的搜索&#xff0c;不知道有没有想过这个功能是如何实现的呢&#xff1f;面对海量的数据&#xff0c;它怎么能在我输入的同时&#xff0c;如此快速的检索到相关内容呢&#xff1f;当我查找资料后&am…

Python元组是什么

引出 在使用Python过程中&#xff0c;列表、集合和字典是比较常用的数据结构。 列表简单说就是数组&#xff0c;不对&#xff0c;它就是数组 集合就是去重的元素结构&#xff0c;和JAVA中的set一样 字典就是一个key-value的键值对&#xff0c;和JAVA中的HashTable一样 但是…

B+树

引言 时隔一年&#xff0c;我又想起当初看数据库时&#xff0c;看到的B树&#xff0c;就是数据库的索引使用的数据结构。再整理一下&#xff0c;看看自己没有忘记很多吧。 概述 B树之前&#xff0c;先来看一下二叉查找树&#xff08;1,2,3,4,5,6,7&#xff09; 恩&#xff0…

关于相对性的思考

换位思考是一直都在倡导的做法。也就是说&#xff0c;在考虑问题时&#xff0c;不光要站在自己的角度来思考&#xff0c;还要站在他人的角度来思考。不光要站在一个角度思考&#xff0c;要尝试多个角度来思考问题。 下面一则小故事&#xff1a; 熊大&#xff1a;熊二&#xff…

Python导入运行的当前模块报错

引言 今天遇到了一个奇怪的现象&#xff0c;简单举个栗子&#xff1a; 文件结构如下&#xff1a; 其中tt.py文件中定义了一个方法&#xff1a; def tt():print(tt) 我现在要在test.py中使用tt(), 代码如下&#xff1a; from test.tt import tt ​ if __name__ __main__:t…

Python中的+=

引出 今天在运行之前写的一个Python脚本时&#xff0c;发生了一个奇怪的现象&#xff08;我怎么老遇到奇怪的现象&#xff5e;&#xff5e;&#xff09;。当时的代码大概长这样&#xff1a; a [1, 2, 3] b [4, 5, 6] # ...一大段逻辑 c a c b # ...一大段逻辑 # 在这里&a…

网络带宽是什么

引出 最近有盆友在购买云服务器&#xff0c;问我带宽选多大的比较合适&#xff1f;当时我说&#xff0c;就你这小网站&#xff0c;整个1M妥妥的。 也罢&#xff0c;就简单介绍一下带宽吧。 概述 其实简单的说&#xff0c;可以比作网速&#xff08;当然还是有区别的&#xf…

js new Date 创建时间默认是8点

起因 最近在写一个页面&#xff0c;需要用到时间控制。然后我通过new Date()传入日期字符串创建了一个对象&#xff0c;并与当前时间做时间戳比较&#xff0c;结果12点刚过&#xff0c;就出问题了。举个栗子&#xff1a; // 假设当前时间是2019年12月22日0点20分 new Date(20…

js解决客户端与服务器时间不一致的问题

引出 最近在写一个项目时&#xff0c;要根据时间进行不同的展示&#xff0c;直接用new Date().getTime()获取当前时间&#xff0c;结果就出问题了。有些用户擅自修改自己的本地时间&#xff0c;导致获取到的时间并不是当前时间&#xff0c;尴尬。 思路 既然如此&#xff0c;…

Python实现cmd命令连续执行

之前是想写一个微信控制程序&#xff0c;通过登录网页微信&#xff0c;可以直接执行命令行代码。也不用ssh登录了&#xff0c;想法很方便。 但是现实很残酷&#xff0c;微信登录这块基本没有问题&#xff0c;已经有大佬写好了&#xff0c;但是命令行执行遇到问题了。 运行cmd…

Python可以减少代码量?我不信

突然看到好几篇文章&#xff0c;内容基本上是什么用Java需要100行&#xff0c;用PHP只需要30行&#xff0c;用Python只需要10行&#xff08;数字记不清了&#xff09;。简单说一下我的看法。 我不服&#xff0c;凭啥都是编程语言&#xff0c;你行我就不行&#xff1f; 我记不…

关于意志的思考

今天在看书后&#xff0c;突然有些感觉&#xff0c;恩&#xff1f;不对啊 先提出疑问&#xff0c;人类是否在做出选择、产生欲望时&#xff0c;是出于自己自由的选择&#xff1f; 如果是&#xff0c;那可以试着&#xff11;分钟让大脑什么都不去想&#xff0c;我试过了&#…

Ubuntu14升级MySQL

最近需要将测试环境的MySQL从5.6升级到5.7. 我就自己先虚拟机搭了一个Ubuntu14进行模拟升级, 不得了 开始了各种踩坑记录 方案一 此方案可以跳过, 全是坑. 搜索 Ubuntu14 MySQL升级5.7, 出现很多结果 查看后发现处理方法全都一样, 既然大家都是这么升级的, 肯定么得问题. …

微信朋友圈技术实现设想

前提 微信朋友圈是我们每天都在用的功能, 但是如果让你来实现一个微信朋友圈, 你会如何做呢? 我来简单设想一下. 实现功能 发朋友圈评论动态查看朋友圈(只能查看好友的)查看评论(只能查看共同好友的) 是不是看着很简单? 也没有几个功能嘛. so easy. 开始实现 数据库选用…

redis的多路复用是什么鬼

有没有人和我一样, 自打知道了redis, 就一直听说什么redis单线程, 使用了多路复用等等. 天真的我以为多路复用是redis实现的技术. 今天才发现, 我被自己骗了, 多路复用是系统来实现的. 对不起自己的专业了. 为了引出多路复用, 我来大胆设想一下技术的发展路程. 前提 一个应用…