• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wuzhi1234
V2EX  ›  程序员

谁需要改进自己的代码

  •  1
     
  •   wuzhi1234 ·
    acegao9527 · Feb 13, 2018 · 7412 views
    This topic created in 3022 days ago, the information mentioned may be changed or developed.

    背景:

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

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

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

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

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

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

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

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

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

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

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

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

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

    我们这边的高手就是代码写的复杂,但是告诉你这么这么就能跑起来了,然后发生什么问题之后看哪里就行了,天下太平
    jameslan
        47
    jameslan  
       Feb 15, 2018 via Android
    就是迅速的鼓捣出看起来能用的烂代码呗。这届管理不行
    tedzhou1221
        48
    tedzhou1221  
       Feb 16, 2018 via Android
    一个方法写 200-1000 行,在我们的随便能找到。注释?可能被狗吃了
    维护性?我宁愿重写
    aminic
        49
    aminic  
       Feb 16, 2018 via Android
    代码🐔文档
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3083 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 466ea39e · 126ms · UTC 13:42 · PVG 21:42 · LAX 06:42 · JFK 09:42
    ♥ Do have faith in what you're doing.