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

[ Java ] 代码质量糟糕, 是常态吗?

  •  1
     
  •   coala ·
    qq418745 · 2022-07-14 10:09:09 +08:00 · 10784 次点击
    这是一个创建于 624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这几年写东西基本都是一个人... 普遍小公司

    回想起来自己第一年写的也挺烂的。

    后面参考比较多的是几个 Java 开源的项目(电商项目,博客系统这种), 好了很多。

    我觉得差不多的水平就是遵循类似阿里巴巴 Java 规范这种, 不能大片重复 Copy 代码, 合适的面向对象, 结构清晰。

    到目前为止接触过 4 家公司的代码, 遇到的情况:

    A 司: 代码风骚 是个高手, 不守规矩, 但是质量不能算差。

    B 司: 政企项目 有代码审计, 看上去稍微好点, 但是还是大片 Copy 这种大量偷懒行为。

    C 司: 外包写的项目, 惨不忍睹, 一个类 7000 行, 一个 Js 文件几千行, 授权和角色管理稀烂

    D 司: 整体写的比较随意, 但好歹没大片 Copy, 勉强能接受, 授权和角色管理稀烂。

    代码质量能比上个 XX 系统的开源项目的公司有多少呢...

    103 条回复    2022-08-19 01:18:52 +08:00
    1  2  
    litguy
        1
    litguy  
       2022-07-14 10:13:06 +08:00   ❤️ 6
    还是我们这些 C/C++ 写底层的靠谱,质量不行马上给你脸色,尤其内核模块,直接挂系统
    felixcode
        2
    felixcode  
       2022-07-14 10:18:21 +08:00 via Android
    你是看到代码表面乱,不懂底层。
    狗头:)
    dwlovelife
        3
    dwlovelife  
       2022-07-14 10:18:28 +08:00   ❤️ 26
    没有 review ,没有 git 工作流插件管控,没有规范管控,再牛逼的公司都不行,一个团队,每个人的代码水平层次不齐,经验也不一样,有多少人把工作当成热爱,有精力和能力写开源的最起码能证明水平尚可,热爱 coding ,去公司上班感觉不太一样,产品催促,巴不得三天活一天干完。所以代码质量糟糕是根本问题是一个公司技术职责管理问题,做业务的很少有人在乎,只要不要太离谱能跑就行,能马上上线就行,所以你想团队里每个人都能写出好代码就几乎不可能,因为一开始的目的就是为了做功能,快速产出,而好代码是要反复打磨,精心设计的,是要花时间的,这跟大部分公司主流业务都违背。
    potatowish
        4
    potatowish  
       2022-07-14 10:21:42 +08:00 via iPhone   ❤️ 1
    代码质量和写代码的人技术水平、编码习惯、工时有直接关系,语言本身也是一道门槛,上手入门的难度越高,门槛就越高,写出烂代码的可能性就越低,起到了一个过滤的作用。
    nothingistrue
        5
    nothingistrue  
       2022-07-14 10:23:06 +08:00   ❤️ 3
    跟 Java 无关,国内是常态。这跟办事风格有关,国内压根就不留代码质量改善的时间。代码质量别说提高了,就是维持,也很占开发成本,并且这占得还是团队成本而不是个人成本(意味着 10 个人中即使 9 个人愿意加班维持代码质量,只要有 1 个人不原因那整体质量就没法维持)。

    就拿阿里巴巴规范来说,看着很规范是吧,但你要么 007 要么写出来看着遵守规范实际上质量糟糕的代码(并且还得 996 )。可以比较以下阿里巴巴 Java 规范跟 google java 规范,你会看到在规范之外的不同办事风格。
    nothingistrue
        6
    nothingistrue  
       2022-07-14 10:26:08 +08:00
    开发成本上举一些简单的例子,结对编程或者代码评审,全覆盖单元测试,这些随便上一个就得让开发时间翻倍。而国内盛行的是只看你有没有在规定的时间内完成可运行程序。
    coala
        7
    coala  
    OP
       2022-07-14 10:31:05 +08:00
    @nothingistrue 想起我也写过一个烂项目, 当时 1 个月时间, 真的太着急了, 还承诺做完了就可以撇清关系... 维护与我无关, 后 15 天就直接放飞自我了, 只想快点结束这种日子... 后来让又让我维护 .. 改的时候好痛苦
    chendy
        8
    chendy  
       2022-07-14 10:31:50 +08:00   ❤️ 2
    常态,想把质量拉满成本太高了,请不起那么多高手,花不起那么长时间,外加各种历史遗留问题
    至于说国内质量不行的,接触过一些国外大软件厂的代码,一样稀烂
    coala
        9
    coala  
    OP
       2022-07-14 10:34:15 +08:00
    @potatowish 这是骗我去改行做 C/C++ 狗头:)
    zxxufo008
        10
    zxxufo008  
       2022-07-14 10:59:30 +08:00
    写代码和写文章一样,闭门造车不会有进步的
    Oktfolio
        11
    Oktfolio  
       2022-07-14 11:03:49 +08:00
    昨天我代码写得直接发脾气,百万行的代码,只有 100 多个 toString ,其中至少有 90% 是我写的,你说代码质量怎么样。
    fengpan567
        12
    fengpan567  
       2022-07-14 11:05:59 +08:00
    建议参考不可能三角
    IvanLi127
        13
    IvanLi127  
       2022-07-14 11:13:34 +08:00
    只能说语言能筛选一波人。。。
    codingbody
        14
    codingbody  
       2022-07-14 11:17:56 +08:00
    刚入职新公司,代码也是稀烂,字段名、属性名,表名,都是拼音首字母,完全不知道啥意思,大段的 copy paste , 都想跑路了。
    BanGanExpert
        15
    BanGanExpert  
       2022-07-14 11:21:02 +08:00
    @codingbody 这种过分了,当然你可以看看有没有其它项目,万一也有好点的呀,都这样就提桶跑路了呗
    siweipancc
        16
    siweipancc  
       2022-07-14 11:26:32 +08:00 via iPhone
    上一个组,功能少有时间单测,一年线上 bug 低于 3 个。
    现在这个,线上 bug 都 200 多了,问就是工期紧没时间
    op351
        17
    op351  
       2022-07-14 11:29:35 +08:00
    有多少钱干多少事
    外包稀烂归稀烂 起码能跑得通
    再说了 外包实际到码代码的人手上的钱少得可怜 中高层把钱全吃光了
    lujiaosama
        18
    lujiaosama  
       2022-07-14 11:36:20 +08:00   ❤️ 1
    烂代码就是克苏鲁屎山, 除了难以维护, 还对人有腐化作用. 一开始兢兢业业, 后面一起加入放飞自我...
    ericmzhu
        19
    ericmzhu  
       2022-07-14 11:45:20 +08:00
    很多就像小学生写字一样,连基本的空格分隔,对齐都做不到。别谈什么代码质量了。
    yaphets666
        20
    yaphets666  
       2022-07-14 11:55:02 +08:00   ❤️ 1
    代码稀烂不一定是代码的问题,需求奇怪,没设计好,时间紧,不稀烂能咋办?
    wtsamuel
        21
    wtsamuel  
       2022-07-14 12:17:41 +08:00
    有没有可能烂代码才是常态
    整洁的代码是多次删除重构后的产物
    muchenlou
        22
    muchenlou  
       2022-07-14 12:24:00 +08:00 via iPhone   ❤️ 1
    我是工作不是生活,如果编码是我的生活,我会很乐意让它优雅,别的不说,你让我对接的产品给我多点时间吧。我能写的好一些的。
    yuruizhe
        23
    yuruizhe  
       2022-07-14 12:31:56 +08:00
    @ericmzhu 格式化插件走起
    yuruizhe
        24
    yuruizhe  
       2022-07-14 12:32:19 +08:00
    @lujiaosama 打不过就加入
    RedBeanIce
        25
    RedBeanIce  
       2022-07-14 12:42:26 +08:00 via iPhone
    代码质量问题最终都是人和时间的问题
    micean
        26
    micean  
       2022-07-14 12:42:36 +08:00
    “代码质量不好怪公司不给时间”和“中国游戏、电影太差怪监管部门”一个道理。
    自身水平不足而已
    datiewang
        27
    datiewang  
       2022-07-14 12:58:10 +08:00
    @micean #26
    影响因素从来都不止一个而已,公司不给时间和从业人员水平参差不齐有什么冲突吗?
    qdxb
        28
    qdxb  
       2022-07-14 13:13:33 +08:00   ❤️ 15
    记得以前 V2 有个帖子,大概内容是楼主一直很关心项目代码质量,文档也维护的很勤快,后来跳槽走了。然后听说老单位人事向领导邀功,说请了个实习生,工资比原来员工低很多,来了就能直接上手维护老项目了,把楼主气的半死。
    aguesuka
        29
    aguesuka  
       2022-07-14 13:17:14 +08:00
    @qdxb 如果这样被气, 智能说楼主的心胸太狭隘了
    dzdh
        30
    dzdh  
       2022-07-14 13:18:40 +08:00
    代码质量和语言无关
    aguesuka
        31
    aguesuka  
       2022-07-14 13:19:58 +08:00
    直接原因是 Java 程序员普遍菜; 根本原因是因为市场太温柔, 养活了一堆制造屎山的公司.
    charlie21
        32
    charlie21  
       2022-07-14 13:25:38 +08:00
    如果不是我遇到过 短时间+高架构质量的项目,我就信你了。说到底还是人行不行,若人不行则啥都不行
    ericmzhu
        33
    ericmzhu  
       2022-07-14 13:49:14 +08:00
    @yuruizhe 主要是个态度问题,有了保持自己的代码整洁的习惯,才会找格式化插件提升效率。
    ziwen1943
        34
    ziwen1943  
       2022-07-14 14:12:06 +08:00
    代码质量和风格和个人的习惯能力是正相关的,如果是从零开始维护一个项目,我见到过有同事,一局游戏的时间写好一份高质量的扫描器,剩下时间我们边聊边写文档的。但是如果是已经堆出来的服务,我们一直的思路是模块化和重构。实际情况公司不会给那么长时间让你优化以前的代码,要么依赖,加入他们,要么走开,重新开始。
    pengtdyd
        35
    pengtdyd  
       2022-07-14 14:34:27 +08:00   ❤️ 1
    还好我是写 rust 的,写的不对编译都过不了
    dayeye2006199
        36
    dayeye2006199  
       2022-07-14 14:37:26 +08:00
    其实有些时候需要关注的是“方差”,而不是“均值”。

    质量不错有时候讲的是均值过得去,方差很小
    均值过得去,方差很大,有时候看着也很难受
    falsemask
        37
    falsemask  
       2022-07-14 14:43:50 +08:00
    产品不懂技术,需要逻辑计算的状态字段作为查询条件,无法在 SQL 直接分页。需求经常改,A 类型数据可以执行某种操作,执行完成更新原数据状态,几天后又加需求 B 类型数据也可以执行某种操作,但是执行完不需要更新原数据状态,代码就得加特判。这是我最近遇到的,还有很多类似情况。
    loolac
        38
    loolac  
       2022-07-14 14:50:08 +08:00
    其实跟统筹有关,看设计时如何分类代码功能;一般情况是分类过的看着比较整齐,没划分的无论标识符命名还是代码逻辑都是垃圾堆。
    NoKey
        39
    NoKey  
       2022-07-14 14:54:42 +08:00
    规范门禁加代码 review ,能把乱的层次限定在一个范围内
    soupu626
        40
    soupu626  
       2022-07-14 15:42:55 +08:00   ❤️ 2
    我司某人,代码风格极其风骚,大量使用函数式编程,但是 JAVA 的函数式懂得都懂,结果就是看他的模块内部实现是一堆 Function<>、Consumer<>、Supplier<>,然后对外接口相对还比较易用,看的出来代码质量很高,但是这个模块估计只有他能维护的动。。。
    cxilife
        41
    cxilife  
       2022-07-14 15:51:10 +08:00
    感觉可以类比房地产的房子建筑质量
    hailiang88
        42
    hailiang88  
       2022-07-14 16:29:02 +08:00
    提倡用英文命名而被喷拽英语的路过。
    人家统一拼音首字母
    更搞笑的是有些小伙伴有地方口音
    没注释完全读不懂
    66beta
        43
    66beta  
       2022-07-14 16:34:50 +08:00
    屎山代码带来了无数的收益;
    优雅的代码陪项目胎死腹中。
    yulon
        44
    yulon  
       2022-07-14 16:43:56 +08:00
    @litguy 前几天接手一个 C++ 项目,一看就是 Javaer 写的,大大小小的都是类,然后一堆 new 在乱飞,把我恶心坏了,修 bug 修到手麻😂
    coala
        45
    coala  
    OP
       2022-07-14 17:12:18 +08:00
    @66beta 我还没经历过整体胎死腹中的项目, 最多新做的功能没人用

    付出了那么多时间, 全都没用上, 想想就是件非常难过的事
    Jekins
        46
    Jekins  
       2022-07-14 17:21:42 +08:00
    那么有优雅代码的开源的项目学习一下吗?
    Qlccks2
        47
    Qlccks2  
       2022-07-14 17:27:49 +08:00
    和语言没关系,只是 JAVA 应用广泛。大环境下其他语言也一样。
    xingyuc
        48
    xingyuc  
       2022-07-14 17:30:13 +08:00
    工期紧任务重,换谁谁这样
    potatowish
        49
    potatowish  
       2022-07-14 17:32:21 +08:00 via iPhone
    @soupu626 这个一点问题都没有,你要是写过公共模块就知道了
    456789
        50
    456789  
       2022-07-14 17:44:35 +08:00
    我的公司就是 shi 山,拉屎的人整个换了一批
    coala
        51
    coala  
    OP
       2022-07-14 17:44:41 +08:00   ❤️ 1
    @Jekins 谈不上优雅, 就是学习, 写好代码而已。
    // halo 博客的源码
    https://github.com/halo-dev/halo

    // 这个也是很多人知道的微服务 Demo 吧. 文档很全
    https://github.com/macrozheng/mall-swarm

    // pig
    https://www.yuque.com/pig4cloud/pig/gg3ndm
    Jekins
        52
    Jekins  
       2022-07-14 17:54:37 +08:00
    @coala 感谢分享~
    DefoliationM
        53
    DefoliationM  
       2022-07-14 18:29:49 +08:00 via Android
    放弃吧,代码写的再好看,早晚也会有人把你写的代码改成屎山,公司不管真的一点用都没有。
    自己的开源项目可以好好弄,其他真的没办法。
    justin2018
        54
    justin2018  
       2022-07-14 18:41:15 +08:00
    项目能跑 上线 ok

    管代码质量干嘛~~~

    能不加班 做完都不错了~~~
    justin2018
        55
    justin2018  
       2022-07-14 18:42:10 +08:00
    @soupu626 不可被替代编程 😁
    daimubai
        56
    daimubai  
       2022-07-14 19:35:19 +08:00
    还是团队要有规范吧,没有规范的话即使每个人写的都“优雅”,放在一起还是很乱的。
    leeg810312
        57
    leeg810312  
       2022-07-14 20:22:54 +08:00 via Android
    @nothingistrue 提高质量为什么 007 ,为什么不延长计划?
    akira
        58
    akira  
       2022-07-14 21:11:32 +08:00   ❤️ 1
    活下来的人才有资格说质量
    kingjpa
        59
    kingjpa  
       2022-07-14 21:24:55 +08:00
    写多了自然就烂了, 等你遇到下班 6 点加需求,第二天上线,
    有 2 个选择,要不立刻跑路 要不赶快敲码,
    假如有一个字段叫 税务登记证书号有效期,你是直接用拼音首字母还是先翻译呢? 你又如何保证翻译出来 其他同事可以看懂呢?难道你还要写文档不成?
    redford42
        60
    redford42  
       2022-07-14 22:03:06 +08:00
    因为技术负债还没有开始发挥威力的时候可能公司已经倒闭了
    feather12315
        61
    feather12315  
       2022-07-14 22:10:12 +08:00 via Android
    @litguy #1 也有大量 copy 的,循环嵌套循环,一个函数上百行
    qiaobeier
        62
    qiaobeier  
       2022-07-14 22:42:17 +08:00
    没有死循环就算好代码
    msg7086
        63
    msg7086  
       2022-07-15 00:35:25 +08:00
    @soupu626 还行吧,那些都是无效代码量,可以脑内屏蔽的。你都当成 var 就行了。
    就像没 lambda 的时候大段大段的匿名类,脑内转换成 lambda 就行了……
    只要接口清晰易用,测试覆盖好,我觉得问题不是很大。函数式又不是什么高深的科技。
    lanlanye
        64
    lanlanye  
       2022-07-15 01:13:18 +08:00
    好奇有多烂,我感觉比起 Python 来说 Java 这种算“规范”的语言写出来的代码平均质量说不定还高点。
    当然,不是说语言不行,而是用的人不行,特别是 Python 火起来之后……
    RiceNoodle
        65
    RiceNoodle  
       2022-07-15 01:47:58 +08:00   ❤️ 1
    我只有在目前的公司,才觉得代码质量做的不错。
    1. 强制要求 code review 获得 approval 后才能合并。
    2. 并且核心业务开发人员真的很用心也很严格的在做 review ,一个 PR 里面的 comment 没清理完坚决不 approval 的那种。

    以前的公司,代码质量的好坏,完全取决于历史和当前开发人员的水平,虽然有的质量还行,但是属于肉眼可见的在腐化,自己在其中,也没办法改变这种现状。
    所以或许确实有个不可能三角,高质量,短时间,人力投入适中,三者只能满足两个。
    TWorldIsNButThis
        66
    TWorldIsNButThis  
       2022-07-15 02:22:51 +08:00 via iPhone
    @lanlanye 其实没多大关系
    这些所谓的规范顶多能达到 20 分即使做到了也离及格差很远
    良好的代码需要持续的人力投入
    ca1123
        67
    ca1123  
       2022-07-15 04:19:23 +08:00
    感谢 java, 这样拼凑的东西也能用
    overthemoon
        68
    overthemoon  
       2022-07-15 05:48:51 +08:00
    我上一家同事写的烂代码超级多,刚进去经常加班就是因为代码烂,还有 bug 。后面一有时间就重构同事代码,几乎把重要功能的代码全部重构了一遍,清清爽爽,效率又快,注释又多。 直到有一天改不动了,直接摆烂,直接在屎山堆里加代码
    ragnaroks
        69
    ragnaroks  
       2022-07-15 08:20:53 +08:00
    java 没有代码质量和样式分析器,只能靠个人水平
    Daiwf
        70
    Daiwf  
       2022-07-15 08:23:27 +08:00
    很多时候是没有办法,接手的就是屎山。重构没有动力。项目又急。然后就抱着又不是不能用的态度直接改改就上了
    fueen
        71
    fueen  
       2022-07-15 08:33:42 +08:00   ❤️ 1
    v2 的奋斗逼还真是多啊
    moyuge
        72
    moyuge  
       2022-07-15 08:37:27 +08:00
    这个话题可以匹配 国内任意语言
    hoopan
        73
    hoopan  
       2022-07-15 08:37:45 +08:00
    代码好坏,大多数不是技术问题,而是管理问题。
    darknoll
        74
    darknoll  
       2022-07-15 08:40:39 +08:00 via Android
    又不是不能用
    bthulu
        75
    bthulu  
       2022-07-15 08:50:29 +08:00
    @soupu626 我也大量使用函数式编程, 我也能维护的动
    coala
        76
    coala  
    OP
       2022-07-15 08:53:11 +08:00
    @lanlanye 和 Python 比起来的确会好.. 毕竟 Java"限制"多
    dqzcwxb
        77
    dqzcwxb  
       2022-07-15 09:03:56 +08:00   ❤️ 2
    kemistep
        78
    kemistep  
       2022-07-15 09:05:25 +08:00
    copy+c,copy+v.....copy,copy,copy ,程序和人,只要一个能跑就行;
    zhang77555
        79
    zhang77555  
       2022-07-15 09:27:56 +08:00
    你得明白在这个烂代码到无法维护的程度之前公司可能都没了
    而如果你的公司熬过了烂代码时期,那大概率也有钱可以重做一套了
    说句实话,大多数情况下,代码写得漂不漂亮没有太大卵用,纯技术公司除外,纯技术公司能占多少呢
    featureoverload
        80
    featureoverload  
       2022-07-15 09:35:32 +08:00
    这个话题下,很多人想的理由水平也可以反映自身代码水平。

    如果没有经历过好的代码质量的工作,那么建议找工作的时候多问一些问题,根据主管( CTO )回答就能推测代码质量了。
    如果准备不了合适的问题,自然就陷入死循环。
    lmmlwen
        81
    lmmlwen  
       2022-07-15 09:40:40 +08:00
    是,尤其是快速迭代的
    featureoverload
        82
    featureoverload  
       2022-07-15 09:42:26 +08:00
    @featureoverload

    从问题来说,代码质量糟糕在当下确实是常态。

    我上一家公司代码质量很高,入职新公司加入的项目代码质量差距明显。

    但是代码质量高的代价是,程序员周一提交一个 MR ,反复 code review 周五才有机会 Merge
    (很多时候会往复两周)

    当然,根据程序员自身水平,这个时间可长可短;通常在 三天到一周 左右。

    被 code review 过的程序员,提交的 code 在三天以下被 Merge 的,
    通常已经过了需要被频繁提 comment 的能力阶段了;
    这时候的 code review 的时间,通常不是花在代码质量上。
    alen0206
        83
    alen0206  
       2022-07-15 09:42:40 +08:00
    继承的屎山不敢改。 。也没时间改。。
    mosfet
        84
    mosfet  
       2022-07-15 09:50:03 +08:00
    我把一个 shi 山项目重构了,当时也是为了后续自己维护方便
    然后就 TM 的测出了两个逻辑 BUG ,就在那 BBBBBBBBB ,搞的我好像罪大恶极,没事找事
    这种事情之后我是不会再干了,无脑往上堆吧
    xz410236056
        85
    xz410236056  
       2022-07-15 09:59:10 +08:00

    只要你跟着 java 更新,就不会屎
    soupu626
        86
    soupu626  
       2022-07-15 10:34:15 +08:00
    @msg7086 对,他的代码质量是非常好的,我说的是可维护性以及新人上手成本的问题,我之前进去看过,可能调用层级比较深了,突然一个 ruleDealFunc.apply(param) 还要回去找这个 Function 哪传进来的,虽然逻辑上看的很顺,但是要修改,需要追实现细节的时候会比较痛苦

    @bthulu 自己写的当然能维护,但是整个工程不可能一直是一个人维护啊,总有要别人顶班的时候

    @potatowish 问题这是个业务模块啊,本质上也是个模版方法或者策略模式就能解决的问题

    @ragnaroks 可以在发布流水线上设卡点,静态扫描不过关不给发
    libook
        87
    libook  
       2022-07-15 10:34:44 +08:00   ❤️ 1
    我实习的时候,负责开发智能电视平台上兼容多个品牌遥控器按键映射的组件,多个键值对应同一个功能的话,可以简单清晰地罗列 case ,然后下面统一操作再 break 。代码写完后交给一个人 review ,他说每个 case 必须有 break ,否则肯定无法编译通过,而且他 10 年工作过程中都是这么认为的……

    我比较认同的是,水平烂的人,用啥高大上语言写出来的代码都一样烂。

    我想,Java 技术栈在这个问题上比较显眼的原因可能有以下几点:
    1. Java 开发者实在太多了,Web 后端开发领域 Java 开发者数量很长时间都是第一,假设大多语言的水平分布都是差不多的,那么 Java 技术栈这种基数大的就比较吃亏,会让人产生经常遇见水平差的人的感觉。
    2. Java 生态非常成熟,在语言基础上建立了各种框架、体系、思想的高楼,表层都是非常抽象的东西,(在 SSH 框架的时代)导致学习周期较长,虽然门槛低,但若想达到对生产所使用的技术完全在掌握的程度,可能要比很多技术栈多花很多的时间。导致可能没有那么多精力关注其他事情。当然现在随着一些新的框架和思想的出现,这个问题可能会逐渐改善。
    3. 一门语言越灵活和抽象,开发门槛越低,但对开发者要求也就越高;写出能工作的代码很容易,写出来能工作的好代码很难,不如一些本身有很多限制和枷锁的语言。鱼与熊掌不可兼得。
    janus77
        88
    janus77  
       2022-07-15 10:45:50 +08:00
    最大的原因还是因为 java 太流行了,写的人太多,每种语言中都有菜鸟,而 java 门槛低,所以菜鸟占比就相对多,再加上幸存者偏差,所以你对 java 的感觉不好。js 同理。
    比如(相对)小众的语言,go ,rust ,你是不是没有发现什么烂代码?实际上是因为,第一门槛高,第二用的人少,而其中菜鸟占比也少,大佬占比多,很多都是极客,所以你能看到的都是高质量代码。
    实际上关键还是在于人。
    XXWHCA
        89
    XXWHCA  
       2022-07-15 11:02:28 +08:00
    和语言没关系,主要还是要看团队水平和有什么样的领导

    A 司应该是比较少的,说明团队整体水平很好,可能是领导不是做技术的
    B 司就不说了,懂得都懂,能干活的就那几个人,甚至是外包进来的
    C 司项目外包更简单了,能用就行,反正不管后期维护
    D 司研发团队应该是不多不少的那种情况,人力刚好满足现在的业务,但又什么都想尝试,可又没有足够的人力来支持

    没有代码审计的小团队国企政企应该比较多,研发就几个人也都是干活的,领导可能就不是做技术的,代码野蛮生长,也会出现大量代码的 copy
    bthulu
        90
    bthulu  
       2022-07-15 11:06:35 +08:00
    @soupu626 现在还有不会函数式编程的 java 新人么? 是个培训班都教这个, 不会的只可能是放弃学习的老油条了吧
    xianyv
        91
    xianyv  
       2022-07-15 11:30:37 +08:00
    我接手的一个项目更垃圾,接口返回信息直接 json.put("xx",111),然后连个注释都没有,全靠英文单词猜
    BrightLiao
        92
    BrightLiao  
       2022-07-15 13:27:53 +08:00   ❤️ 1
    要说代码质量,首先要搞清楚什么样的代码是高质量的代码。

    咱们经常提的 SOLID 原则是衡量 OO 范式的代码质量的一种。

    不过 SOLID 的局限性比较大。Thoughtworks 最近在技术雷达上推荐 CUPID 是另一个可参考的好代码的特质组合。

    CUPID 是指:
    - C: Composable ,可组合的代码
    - U: Unix philosophy ,符合 Unix 哲学
    - P: Predictable ,可预测的
    - I: Idiomatic ,符合惯例的
    - D: Domain based ,基于领域的

    我前段时间结合 CUPID 原文及自己的理解,写了一篇文章分享,给大家参考下: https://brightliao.com/2022/05/24/5-properties-of-good-code-cupid/

    有了什么是高质量代码的基本理解,再去看代码质量好不好,我们会发现新大陆。
    lonenol
        93
    lonenol  
       2022-07-15 13:38:53 +08:00   ❤️ 1
    与其说 Java 烂,不如说是业务系统代码烂。。
    每个业务系统都会有各种奇奇怪怪的业务需求,各种修修补补 ,各种 if else ,演进个半年一年的,啥语言写都是烂。。

    开源出来的东西最多能算业务系统第一个版本。。当然可以写的很漂亮。。你让把你们公司的特殊业务逻辑加里面再看看
    RainCats
        94
    RainCats  
       2022-07-15 16:32:13 +08:00
    本来周三要上线的,结果都延期三次了,今天产品都还在提了一堆修改,你说呢,这跟语言有关系吗,跟个人能力有关系,但也跟团队有关系,重大关系,压根不给你足够的时间去回头梳理,我只能是一边做新需求一边看看哪些需要重构的顺手重构一下,再跟测试说一下
    urnoob
        95
    urnoob  
       2022-07-15 17:31:50 +08:00
    我只说 java 的哈
    请面向金钱编程!
    只要满足客户需求,产生价值,所谓的代码质量,UT 覆盖率都是虚的,除了耗费你的时间别无用处。
    urnoob
        96
    urnoob  
       2022-07-15 17:37:22 +08:00   ❤️ 2
    补充一点。以前讲瀑布,现在推敏捷,养活了多少人,以前说 TDD ,现在又推 DDD ,又浪费了多少码农时间。重构!千万别去碰!要么继续堆,要么新项目重开!切记!
    LeegoYih
        97
    LeegoYih  
       2022-07-15 18:06:07 +08:00
    大部分公司都是业务第一、产品第二、技术第三。
    想赚钱就得快速迭代,持续交付,跟语言毛关系没有,用其他语言照样一堆屎山,甚至比 Java 更屎(尤其动态语言),屎到维护不了,有的内存泄漏满天飞,还有存在 this != null 这种逆天操作。
    11232as
        98
    11232as  
       2022-07-15 18:10:16 +08:00
    业务本身就没逻辑可言,代码也就只能 if-else 。如果业务迭代得快的话,代码写出来的时候指不定就已经过时了。
    WOLFRAZOR
        99
    WOLFRAZOR  
       2022-07-15 18:53:17 +08:00
    @litguy 哈哈,毕竟写底层可不是开玩笑的,一出问题肯定被骂死😂。
    @yulon 建议重构😂😂同样的时间,我宁愿重写也不愿接烂摊子😂

    A 这类比较少,说明团队整体水平很好,可能是领导不是做技术的。
    B 大概率是外包的,只能好一点的外包
    C 是质量更差的外包。
    D 是那种在夹缝中生存的团队,现有功能满足了,想加新的但人手不够。
    WispZhan
        100
    WispZhan  
       2022-07-15 19:19:17 +08:00
    先不说代码质量,有几个正经写 Unit Test 的? 出来走一个让我看看
    理由无非是老三样: 没时间、能跑就行、质量高了工资高吗?

    ---

    都说项目质量差、加班加的多,我也没见几个人(还是有不少,起码认识不少有态度的),愿意倒推流程、质量、进度、需求的。

    一个团队,一环差,环环差,木桶原理。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2767 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:12 · PVG 20:12 · LAX 05:12 · JFK 08:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.