V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
niuer
V2EX  ›  程序员

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

  •  1
     
  •   niuer · 2015-03-06 16:21:50 +08:00 · 3397 次点击
    这是一个创建于 3336 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    功能性:如果不能实现功能要这代码何用?
    正确性:是否正确地处理了边界数据,是否考虑到了异常情况
    可维护性:是否给所有标识符起了一个恰当的名字,是否有过长或意义不明的函数,注释是否是必要的且反应了代码的最新情况
    可拓展性:在多大程度上考虑了需求在未来可能做的变更
    可测试性:是否能够简单地进行手工测试和自动测试,是否和其他模块有强依赖关系导致很难单独测试
    Septembers
        6
    Septembers  
       2015-03-06 18:02:16 +08:00
    架构层次清晰
    分类清晰
    语意明确
    Tink
        7
    Tink  
       2015-03-06 18:11:38 +08:00 via iPhone
    功能完整,简单易懂。
    msg7086
        8
    msg7086  
       2015-03-06 18:39:34 +08:00
    能 赚 钱
    spacewander
        9
    spacewander  
       2015-03-06 18:51:52 +08:00
    通过函数名和变量名可以猜它们的用途,而且在大多数情况下都能猜对。
    joyeblue
        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. 可维护性高
    momo5269
        11
    momo5269  
       2015-03-06 21:13:52 +08:00
    看得懂 结构清晰 扩展性强
    zhishihei
        12
    zhishihei  
       2015-03-06 23:15:55 +08:00
    赚到钱的,或赚到用户的。毫无疑问。
    mcfog
        13
    mcfog  
       2015-03-07 00:28:58 +08:00
    谁都看得懂,而且很容易迅速定位到一块逻辑
    谁来加功能改功能得到的结果都差不多
    和需求文档神似
    lint
    SmiteChow
        14
    SmiteChow  
       2015-03-07 00:50:11 +08:00
    就三条
    1.变量名不能是汉语拼音
    2.对齐
    3.注释
    monkeylyf
        15
    monkeylyf  
       2015-03-07 02:16:50 +08:00
    readability/extendibility/clean APIs if any
    KentY
        16
    KentY  
       2015-03-07 02:46:01 +08:00 via Android
    思路巧妙的实现让我觉得赏心悦目
    randyzhao
        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个, 心里好舒服.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3650 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:37 · PVG 12:37 · LAX 21:37 · JFK 00:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.