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

谁需要改进自己的代码

  •  1
     
  •   wuzhi1234 ·
    acegao9527 · 2018-02-13 16:33:06 +08:00 · 6870 次点击
    这是一个创建于 2477 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

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

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

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

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

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

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

    结论是需要重新评分,并且大家都要改进自己的代码。
    Lucups
        18
    Lucups  
       2018-02-13 17:44:16 +08:00
    论 Code Review 的重要性。

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

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

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

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

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

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

    我们这边的高手就是代码写的复杂,但是告诉你这么这么就能跑起来了,然后发生什么问题之后看哪里就行了,天下太平
    jameslan
        47
    jameslan  
       2018-02-15 02:03:54 +08:00 via Android
    就是迅速的鼓捣出看起来能用的烂代码呗。这届管理不行
    tedzhou1221
        48
    tedzhou1221  
       2018-02-16 12:41:55 +08:00 via Android
    一个方法写 200-1000 行,在我们的随便能找到。注释?可能被狗吃了
    维护性?我宁愿重写
    aminic
        49
    aminic  
       2018-02-16 15:14:50 +08:00 via Android
    代码🐔文档
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 21:24 · PVG 05:24 · LAX 13:24 · JFK 16:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.