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

谁需要改进自己的代码

  •  1
     
  •   wuzhi1234 · 252 天前 · 4989 次点击
    这是一个创建于 252 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

    AB 的代码能力是 50,C 的代码能力是 100 AB 的代码互相都可以看懂,并且可以互相修理对方的 bug C 可以看懂 AB 的代码,并且可以互相修理他俩的 bug AB 很难看懂 C 的部分代码,并且无法修理对应的 bug

    问题: 谁需要改进自己的代码

    49 回复  |  直到 2018-02-16 15:14:50 +08:00
        1
    ghiei9101   252 天前   ♥ 3
    C 需要改进注释和文档
        2
    sea516   252 天前
    有 bug 不能给 100
        3
    wuzhi1234   252 天前
    @ghiei9101 注释经过投诉后增加挺多的,但是私有方法跳来跳去,一个方法动辄上百行,真的很难看下去
        4
    hsuan   252 天前 via Android
    AB
        5
    ytll21   252 天前   ♥ 7
    一个方法动辄上百行,真的很难看下去 -> 这个能给 100 ?
        6
    nino   252 天前
    代码写的看不懂恐怕给不了 100 分啊
        7
    whypool   252 天前
    那 C 的 100 就有点假了
    100 的人也是经历过 50 的阶段的
        8
    wuzhi1234   252 天前
    @ytll21 我是随便给个分数,满分 1000
        9
    eaglexiang   252 天前
    代码能力的体现之一就是易读性与易维护性,为什么 100 写出来的代码反而不如 50 的代码易懂?
    AB 互相能理解对方的代码?两个代码能力很差的人,别说对方的代码,过两个月连自己的代码都理解不了。
        10
    msg7086   252 天前   ♥ 2
    不知道这打分怎么来的。
    写出来的代码要短小精悍,易读,不容易读的部分要加注,有条件的话要做单元测试和特性测试。
    要是 1000 分打出 50 和 100,那这几个人全都得开了。

    私有方法上百行,内部没注释,其实是小事。如果你特牛逼,上百行代码不出错,无 Bug (至少是无显著 Bug ),完美测试覆盖,内部就当做黑匣子来做都行。如果不牛逼,那就老老实实按照要求写代码。
        11
    wuzhi1234   252 天前
    @msg7086 你说的很在理,上百行的本事是你的代码别人不用维护不用管
        12
    Richardhtw   252 天前
    代码能力强不是应该写出简明易懂高效便于维护的代码吗???
    感觉前提不成立啊。
        13
    SuperMild   252 天前
    一个重点:C 的代码,难懂的部分,是不是对系统有很大作用(比如性能提高很多,并且该性能是系统原本的短板之一)。

    如果有简明易懂的方法来实现 C 的难懂部分,并且性能啥的没什么损失,那 C 这是能力不行啊,或者明明能力很行,却故意弄些难维护的代码出来,这就不是代码改不改进的问题,是心态有问题。
        14
    fatttt   252 天前 via Android
    @wuzhi1234 一个方法超过 100 行就要思考一下了
        15
    SuperMild   252 天前
    还有就是,AB 代码所谓的易懂,是不是没考虑到以后系统变得复杂的问题,直接把全部逻辑写在一个函数里,前期是更好懂,但后面可能重构的工作量就大了。C 是不是用了更容易扩展的 pattern 呢。
        16
    moult   252 天前
    C 代码难懂的部分,是不是用到一些高级高效算法,亦或是符合一定的规范,还是就纯粹的抖机灵?
    最好同一个需求,让 ABC 都写出一段,贴上来,大家评判一下。

    举个例子,实现用户资金变动功能。
    AB 写了个函数,在里面做更新余额等一系列操作,所有的操作都在一个文件里面,通俗易懂。
    但是 C 却构造了一个事件机制,更新余额、记录账目流水、发送通知等操作,通过侦听这个事件来实现。
    例子可能不是很恰当,大概意思是 C 灵活使用事件钩子机制,自然就比 AB 来的规范,当然 AB 就应该学习 C 了。
        17
    qiumaoyuan   252 天前
    “ AB 很难看懂 C 的部分代码,并且无法修理对应的 bug ”,说明 C 的代码能力 100 的评分不正确。

    结论是需要重新评分,并且大家都要改进自己的代码。
        18
    Lucups   252 天前
    论 Code Review 的重要性。

    别人看不懂。。。除非 AB 真小白,不然就是 C 有大问题。
    我之前维护的一个 PHP 项目,所有的数字(0~9)值不定义成常量也就算了,还写成 ASCII 码(都用 chr(48)~chr(57) 来表示),生怕别人能看懂他的代码。
        19
    CoderGeek   252 天前
    说实话 写的有效率也该注释 抖机灵啥的没意思 C 如果不是高效之类的还不如 B
        20
    CEBBCAT   251 天前 via Android
    啥啥啥?
        21
    easylee   251 天前
    要有造轮子的能力但不要到处秀自己的能力,毕竟公司不是自己家开的。
    项目是个团队合作的事情,讲究效率。
    在此认为 C 的代码是需要改进的。
    话说楼主是在工作中遇到不顺心的事情了吗?
        22
    coderluan   251 天前
    ABC 的领导需要改进自己的管理水平,项目组里人有毛病非得互相改代码。
        23
    stzz   251 天前 via Android
    赞同楼上,觉得这个管理方面的问题大于编码方面的问题
        24
    omph   251 天前
    这是道离散数学的命题逻辑题
        25
    wuzhi1234   251 天前 via iPhone
    @easylee 我是 ab 中的一个,c 是从社招进来的大拿,但是对于代码可读性和可维护性不屑一顾,认为快速地实现就行,有些代码原则上的一些分歧
        26
    wuzhi1234   251 天前
    @coderluan 敏捷里提倡互相可以取代代码共有,所以组里是要求互相之间要能熟悉对方的代码的,可是 C 的代码真的又长又复杂,对可读性不屑一顾
        27
    wuzhi1234   251 天前
    @CoderGeek C 的牛逼之处在于把我们至少需要 AB 三天才能实现的一个复杂业务逻辑一天就写完了,代价就是 AB 完全读不下去 C 写出来的代码,而且一出问题只能 C 去找,我们已经吃了几次这段代码的亏,C 让 AB 把他那段重写下,说他写过再写就没有意义了,可是 AB 并不想去重构那段代码了,而重写当然更蛋疼,那段代码经过若干次修修补补,谁知道有哪些隐形的坑啊,一直在线上跑着呢
        28
    wweir   251 天前 via Android
    私以为代码水平高的一大标准是代码好接手。
    不是不让写复杂的代码,有些逻辑、算法自身就很复杂,无法从代码侧优化。
    但我们设计一个优秀的代码结构,将复杂进行封装,在调用侧呈现出清晰的目的与思路
        29
    iugo   251 天前
    在大多数情况下, 代码能力强应该是用简单易懂的方法解决复杂的问题, 有时给人一种醍醐灌顶的感觉.
        30
    asj   251 天前
    @wuzhi1234
    C 不需要改进代码,需要换份工作。
        31
    swulling   251 天前 via iPhone
    你们不用 Code Review 么,

    C 的代码 AB 看不懂就根本过不了 Review
        32
    dddd1919   251 天前
    @wuzhi1234 就这编程水平,你是重新定义了代码能力 100
        33
    coderluan   251 天前
    @wuzhi1234 提倡是提倡,现实是现实,提倡这个没问题,但是现实中出现这种情况一般就是管理不到位。
        34
    vagranth   251 天前 via Android
    我也觉得 c 的能力未必高
    写得快并不代表水平高
        35
    bramblex   251 天前
    分情况

    1. 如果这部分代码是业务逻辑代码,那么问题大概率在 C 身上。业务逻辑又不需要啥硬基础,这都写得别人看不懂,说明代码逻辑就不清楚(大概率一堆暗坑)。

    2. 如果是需要硬基础的基础轮子,那么问题在 AB 身上。需要硬基础,比如相关理论 /算法基础的,那么写出来代码没有特定硬基础的人看不懂很正常。

    但是一般情况下都是第一种情况,第二种情况下 AB 就不应该被招进来……
        36
    wuzhi1234   251 天前 via iPhone
    @dddd1919 我只是取了两个数字,100 并不是满分
        37
    CoderGeek   251 天前 via iPhone
    @wuzhi1234 那还是有问题 不是自己写代码那么简单 工作需要互相配合 除非一个模块单独负责你有这样的权利 还是前提那么长的代码还是要有注释的 要不只会觉得你是奇葩
        38
    sagaxu   251 天前
    C 的牛逼之处在于把我们至少需要 AB 三天才能实现的一个复杂业务逻辑一天就写完?

    C 的工资有 AB 的三倍吗?如果不到 3 倍,把 AB 这样的都裁掉,全部招 C 这样的成本要低很多。
        39
    laoyuan   251 天前
    你说 A、B 搬砖速度 50,C 搬砖速度 100 就行了
        40
    laoyuan   251 天前
    然后 AB 砖码得工整,C 瞎 JB 码,码完了不敢动,不小心就塌了
        41
    rocksolid   251 天前
    业务逻辑看不懂和代码水平有什么关系?让 c 写一下思路,要是还看不懂就帮 AB 培训下
        42
    inflationaaron   251 天前 via iPad
    代码水平每个人有不同的标准啊,搬砖的觉得可读性、可维护性越好越强,hacker 们没准还觉得越炫技越强呢。当然如果大家都搬砖那就照着搬砖的标准来呗。
        43
    dddd1919   251 天前
    @wuzhi1234 满分 100 分和满分 10000 分,这两个前提差别大了
        44
    LokiSharp   251 天前
    都不需要改进,把 AB 开掉,然后招能看懂 C 写的代码的人。代码看不懂,真的就是能力问题。
        45
    easylee   251 天前
    @wuzhi1234 当年我前辈大概这么告诉我:“代码是写给你同事看的,OK ?”
        46
    yuriko   251 天前
    客户端开发表示,比起效率,业务代码别人看不懂更要命……

    我们这边的高手就是代码写的复杂,但是告诉你这么这么就能跑起来了,然后发生什么问题之后看哪里就行了,天下太平
        47
    jameslan   250 天前 via Android
    就是迅速的鼓捣出看起来能用的烂代码呗。这届管理不行
        48
    tedzhou1221   249 天前 via Android
    一个方法写 200-1000 行,在我们的随便能找到。注释?可能被狗吃了
    维护性?我宁愿重写
        49
    aminic   249 天前 via Android
    代码🐔文档
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2820 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 10:15 · PVG 18:15 · LAX 03:15 · JFK 06:15
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1