你如何评估两个模块代码的优劣?请列出你认为重要且可测量的参数,并尝试构造一个函数来描述你对代码优劣评估的经验公式。根据这个公式,请举例说明哪些形态的代码是代码臭味的典型(请结合自身过去经验中的例子)。
1
akira 2015-03-06 16:40:22 +08:00
能实现功能需求 并且能一眼看懂的代码就是好代码
|
2
alexapollo 2015-03-06 16:44:05 +08:00
臭代码:看上去第一眼就有个感觉:这段代码是不是做过混淆?
|
3
NewYear 2015-03-06 17:23:46 +08:00
注释:欢迎niuer光临!niuer是最帅的
|
4
mengzhuo 2015-03-06 17:56:53 +08:00
简单
易读 结构清晰 命名准确 参见:代码大全╮(╯▽╰)╭ |
5
jybox 2015-03-06 18:02:03 +08:00 1
按顺序:
功能性:如果不能实现功能要这代码何用? 正确性:是否正确地处理了边界数据,是否考虑到了异常情况 可维护性:是否给所有标识符起了一个恰当的名字,是否有过长或意义不明的函数,注释是否是必要的且反应了代码的最新情况 可拓展性:在多大程度上考虑了需求在未来可能做的变更 可测试性:是否能够简单地进行手工测试和自动测试,是否和其他模块有强依赖关系导致很难单独测试 |
6
Septembers 2015-03-06 18:02:16 +08:00
架构层次清晰
分类清晰 语意明确 |
7
Tink 2015-03-06 18:11:38 +08:00 via iPhone
功能完整,简单易懂。
|
8
msg7086 2015-03-06 18:39:34 +08:00
能 赚 钱
|
9
spacewander 2015-03-06 18:51:52 +08:00
通过函数名和变量名可以猜它们的用途,而且在大多数情况下都能猜对。
|
10
joyeblue 2015-03-06 20:00:17 +08:00
臭代码:
1. 一段功能相似或者相同的代码到处拷贝 2. 代码中充斥着魔数 3. 无日志或者日志未充分打印相关信息(仅针对后台) 4. 变量函数命名随意 5. 代码格式差(参考google c++编程规范) 6. 代码逻辑混乱 7. 长函数 (一个函数可达1k行) 8. 大文件 (一个文件可达2w行) 好代码: 1. 代码即注释 2. 逻辑简单 3. 层次分明 4. 可维护性高 |
11
momo5269 2015-03-06 21:13:52 +08:00
看得懂 结构清晰 扩展性强
|
12
zhishihei 2015-03-06 23:15:55 +08:00
赚到钱的,或赚到用户的。毫无疑问。
|
13
mcfog 2015-03-07 00:28:58 +08:00
谁都看得懂,而且很容易迅速定位到一块逻辑
谁来加功能改功能得到的结果都差不多 和需求文档神似 lint |
14
SmiteChow 2015-03-07 00:50:11 +08:00
就三条
1.变量名不能是汉语拼音 2.对齐 3.注释 |
15
monkeylyf 2015-03-07 02:16:50 +08:00
readability/extendibility/clean APIs if any
|
16
KentY 2015-03-07 02:46:01 +08:00 via Android
思路巧妙的实现让我觉得赏心悦目
|
17
randyzhao 2015-03-07 02:54:41 +08:00
我比较讨厌的
1. 变量名: 同段代码里存在两个相似的变量名 > 错误意义的英文 > 拼音 > 英文单词拼错 > 有易懂单词, 却用不易懂单词 2. 上下文都是驼峰命名, 中间突然冒出来一个什么鬼啦??!! 3. 缩进问题: 规定说用 3 个 space, IDE 编辑器什么的, 能不能抽2分钟设置一下嘛... 4. "无休止" 的三目套三目套三目... ( 运算符两边还不空格, 堆成一团的, 罪加一等. ) 5. 千行以上的函数. 6. 简单粗暴的避免大函数, 硬拆函数. 好吧, 每个函数行数是少了, 效率就不管了? 7. 换行过度: 举个例子, 写 sql, 一行平均 6 ~ 10 个字符, 硬生生写40多行. ( 我屏幕不大, 上上下下这样折腾我, 真的好么... ) 8. 行尾有空格: code review 的时候, reviewboard 会标红, 我看的难受. 9. 知道建表, 不知道加 index. 10. 可以一个函数搞定的, 偏偏给你复制成两个. 嗯, 凑齐10个, 心里好舒服. |