是不是国内公司内部项目的代码质量要普遍低于开源代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shibo501c
V2EX    问与答

是不是国内公司内部项目的代码质量要普遍低于开源代码?

  •  
  •   shibo501c 2014 年 3 月 24 日 5933 次点击
    这是一个创建于 4332 天前的主题,其中的信息可能已经有所发展或是发生改变。
    - 入职半年的rookie,觉得有点失望,有时候看看开源的代码,觉得那才是工程师写的东西
    - 维护以前高工的代码,发现因为经手的人太多,已经非常的混乱不堪,发现很多同事对代码的可读性,也不是很看重,有得甚至说我咬文嚼字。
    - 自己觉得之所以变成这样,可能是经手的人太多,每个人都觉得加一点点代码,就能实现这个功能,而不愿去花更多的时间,去做一个更合理的重构,导致代码里到处是各种if else的判断和各种flag,而不去设计下数据结果的关系,所谓的技术债?
    - 组长和经理看重功能,觉得人家几行就能实现功能,就是好,我说想重构,觉得成本高风险大
    - 我应该自己花时间重构这些代码? 还是继续添加if else?
    15 条回复    1970-01-01 08:00:00 +08:00
    tan9le
        1
    tan9le  
       2014 年 3 月 24 日   1
    反正放在我们公司,是没有这个时间,也没有这个成本去做重构的。
    产品型的公司可能要好一些。
    重构完了之后,大部分的测试工作都需要再来一次,就算时间允许,成本也不会允许吧。
    alexrezit
        2
    alexrezit  
       2014 年 3 月 24 日   1
    你觉得只要是开源的代码质量就高? GitHub 上代码烂得像一坨屎还很多 stars 的 repo 有的是.
    hoogle
        3
    hoogle  
       2014 年 3 月 24 日 via iPhone   1
    考虑时间和成本 相对来说,开源项目没有deadline, 多半是开发者自己兴趣做的,自然至少得自己满意, 公司的,多半赶需求, 而且大多数公司也不会给你时间重构什么的吧 那些人多事少的大公司无视掉
    acros
        4
    acros  
       2014 年 3 月 24 日   1
    还有一个原因,有名开源代码常常是出自大牛的千锤百炼之手
    ayang23
        5
    ayang23  
       2014 年 3 月 24 日   1
    大部分开源代码质量不如公司写的吧,你只是看到几个有名项目,除非是和外包公司比
    shibo501c
        6
    shibo501c  
    OP
       2014 年 3 月 24 日
    @alexrezit 那倒是,我指的是有名的开源项目
    soundbbg
        7
    soundbbg  
       2014 年 3 月 24 日   2
    要理解公司是需要产出的(而且这一点确实很正确),不是给你来写代码的。再说代码漂亮与否每个人都多多少少有些差异,没有纯的绝对漂亮的代码和设计。想想这一点,在工作中,能做的有:

    1. 自己写漂亮。
    2. 自己写的简单。(这个很难)
    3. 推广出去让别人写漂亮。

    推荐看这个 https://medium.com/p/db854689243 个人觉得是很赞的。
    shibo501c
        8
    shibo501c  
    OP
       2014 年 3 月 24 日
    @tan9le @hoogle 看来是普遍现象,不过看很多招聘上都说希望面试者对代码有“洁癖”,如果改动能够在掌控的范围内,大家还是会看中代码质量的
    cxe2v
        9
    cxe2v  
       2014 年 3 月 24 日
    我反正是尽量去贴合之前代码的风格
    shibo501c
        10
    shibo501c  
    OP
       2014 年 3 月 24 日
    @cxe2v 恩,尽量还是保持原来的风格,但是有时候的问题就比风格严重了,比如一个构造函数,每次改的时候加一个变量,后来慢慢的就有十多个参数之类的,或者有时候应该用子类更好,但是为了简单,之前的人仅仅在一个类的几个主要方法里加了个if (flag),这种其实是最不好弄的
    loryyang
        11
    loryyang  
       2014 年 3 月 24 日   1
    个人感觉我们组的代码还是可以的,有单测,编码规范也还可以,但是说实话,可能是新项目,代码改多了就容易烂
    vbs
        12
    vbs  
       2014 年 3 月 24 日
    重构的确成本大风险高,不到必须的情况下是不会改的
    zhc
        13
    zhc  
       2014 年 3 月 24 日   1
    身边某些工作很多年的同事对面向对象都没有理解只是知道这个名词而已,代码写得非常复杂各种耦合各种束缚,改这样的代码就像吃屎一样痛苦,可是没办法,每个人对代码的要求和编码的理解都不一样.

    程序员把代码结构写得尽量合理其实是为自己减少工作量,日后的维护修改会非常容易,但很大部分对这个没什么想法.

    优秀的程序员看上去总是很轻松没什么事做,愚蠢的老板会认为这个人没干活,不如那些整天埋头不停创造垃圾代码拉屎给自己和别人吃的程序员卖力.但这就是现实.

    所以有完美主义的程序员才是好程序员.
    dragonszy
        14
    dragonszy  
       2014 年 3 月 24 日
    事实1:世界上的代码是改不完的
    事实2:世界上总有垃圾代码不断产生
    事实3:没有最好的代码,只有更好的代码
    事实4:不完美才产生新的需求
    事实5:每个行业其实都这样
    ren2881971
        15
    ren2881971  
       2014 年 4 月 8 日
    老掉牙的项目
    人员的经常流动
    对系统或者业务的不熟悉
    是主要原因。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2073 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 11:25 PVG 19:25 LAX 03:25 JFK 06:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86