在你心目中,需要具备哪些条件的代码才是好代码?

2015-03-06 16:21:50 +08:00
 niuer

你如何评估两个模块代码的优劣?请列出你认为重要且可测量的参数,并尝试构造一个函数来描述你对代码优劣评估的经验公式。根据这个公式,请举例说明哪些形态的代码是代码臭味的典型(请结合自身过去经验中的例子)。

3558 次点击
所在节点    程序员
17 条回复
akira
2015-03-06 16:40:22 +08:00
能实现功能需求 并且能一眼看懂的代码就是好代码
alexapollo
2015-03-06 16:44:05 +08:00
臭代码:看上去第一眼就有个感觉:这段代码是不是做过混淆?
NewYear
2015-03-06 17:23:46 +08:00
注释:欢迎niuer光临!niuer是最帅的
mengzhuo
2015-03-06 17:56:53 +08:00
简单
易读
结构清晰
命名准确
参见:代码大全╮(╯▽╰)╭
jybox
2015-03-06 18:02:03 +08:00
按顺序:

功能性:如果不能实现功能要这代码何用?
正确性:是否正确地处理了边界数据,是否考虑到了异常情况
可维护性:是否给所有标识符起了一个恰当的名字,是否有过长或意义不明的函数,注释是否是必要的且反应了代码的最新情况
可拓展性:在多大程度上考虑了需求在未来可能做的变更
可测试性:是否能够简单地进行手工测试和自动测试,是否和其他模块有强依赖关系导致很难单独测试
Septembers
2015-03-06 18:02:16 +08:00
架构层次清晰
分类清晰
语意明确
Tink
2015-03-06 18:11:38 +08:00
功能完整,简单易懂。
msg7086
2015-03-06 18:39:34 +08:00
能 赚 钱
spacewander
2015-03-06 18:51:52 +08:00
通过函数名和变量名可以猜它们的用途,而且在大多数情况下都能猜对。
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. 可维护性高
momo5269
2015-03-06 21:13:52 +08:00
看得懂 结构清晰 扩展性强
zhishihei
2015-03-06 23:15:55 +08:00
赚到钱的,或赚到用户的。毫无疑问。
mcfog
2015-03-07 00:28:58 +08:00
谁都看得懂,而且很容易迅速定位到一块逻辑
谁来加功能改功能得到的结果都差不多
和需求文档神似
lint
SmiteChow
2015-03-07 00:50:11 +08:00
就三条
1.变量名不能是汉语拼音
2.对齐
3.注释
monkeylyf
2015-03-07 02:16:50 +08:00
readability/extendibility/clean APIs if any
KentY
2015-03-07 02:46:01 +08:00
思路巧妙的实现让我觉得赏心悦目
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个, 心里好舒服.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX