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

诸位公司项目的代码质量高吗?

  •  
  •   clecho · 38 天前 via Android · 14649 次点击
    这是一个创建于 38 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我之前待过的都是些小公司,代码质量都不高。不过基本都是做的 to b 端的系统,所以感觉 bug 也不多,性能因为用户少也没什么感觉。

    这次的公司做 to c 的应用,我就开始感觉 bug 贼多,系统性能也不好。代码质量一言难尽。感觉线上系统全是 bug,就等着用户来发现。

    这种情况不是某一个人造成的,是产品,开发,测试一起造成的。

    产品考虑需求不全面,想着开发写的时候会发现问题。

    开发写代码的时候也没有多考虑,主流程能跑通就 ok,以前的历史代码是这么写的,新功能我也这么写。

    测试也对系统不够了解,主流程差不多就可以了。剩下的 bug 随缘发现。

    总结一下就是,所有人都不了解系统。公司迭代又快,没时间去仔细思考。(以前一周一迭代,最近开始两三天就迭代一次)

    造成的后果就是功能逻辑混乱,一但要加新的需求就会丢三落四,总有些地方没有兼顾到。线上全是 bug。

    搞的我都有点怀疑自己的开发能力了,因为 bug 真的太多了。

    以前网上总流传一个说法,大部分公司的代码不开源的原因不是业务有多机密,只是因为代码质量太差,开源了怕丢人。

    所以今天想问下在座的诸位,你们公司的代码质量高吗?线上 bug 多吗?
    194 回复  |  直到 2019-11-04 17:00:27 +08:00
    1  2  
        101
    winterbells   37 天前 via Android
    @hanxiaodi #66 差不多,我 dev 分支打的包还提示我要升级。。。
        102
    galikeoy   37 天前
    看到你们都这样,我就放心了
        103
    iyu90   37 天前   ♥ 2
    任何高质量的项目,都能让一个新手 /菜鸟给破坏殆尽
        104
    loudefa   37 天前
    看到大家这么回复我就放心了
        105
    userdhf   37 天前
    被人喷过代码写得像 shit
    谁来给我讲讲不像 shit 的代码长什么样
    尤其是那种 1 周干仨月的项目
        106
    llllboy   37 天前
    看到大家这么回复我就放心了
        107
    shanlan   37 天前
    注释都没有
        108
    niucility   37 天前
    业务导向 + 需求频繁改动
        109
    yazhouli01   37 天前
    你说的是对的,别谈开源了 ,我自己都看不下去呢
        110
    nikolausliu   37 天前
    你听说过 shit mountain 吗?
        111
    blackccc   37 天前
    能用就行
        112
    Justin13   37 天前 via Android   ♥ 3
    我们组底下有一句话:“小车不倒只管推”
        113
    murmur   37 天前
    @hantsy 这就是现实,尤其是 APP,如果你半年不能上线,拿不到投资或者不被收购,要么结局是你的产品太垃圾,脱离市场,直接倒闭,要么是大厂拿着你的创意,迅速用更高的技术、更优秀的设计收割你的市场,尤其是腾讯,导入微信 QQ 用户,这推广简直恐怖
        114
    bailao   37 天前
    让我想起某普通话成绩查询官网的源码
        115
    iYoloyolo   37 天前
    @Justin13 老哥,你这句话我收了,说的太好了 哈哈哈
        116
    toyuanx   37 天前
    我们公司大家写代码的风格都不一样,一个离职的同事代码注释基本没有,交接的同事看代码得看半天才理清楚;有一个同事用 vim 写,不太注意缩进;有一个同事写代码很冗余;有一个同事代码风格很好就是交流困难( PM 太烂了我觉得他是故意这么交流的);为什么我知道这么清楚呢----------因为我在组里资历最小,我会去总结他们的代码风格,取其精华去其糟粕。
        117
    random0O   37 天前 via Android
    在国外大厂的新组,感觉我们的代码单个模块拿出来质量都不错,差就差在模块设计上面。用的框架和服务都是公司内部的,外界积累的经验用不上,组内没有资历特别老的员工带,现在在讨论重构。
        118
    kayv   37 天前   ♥ 2
    高,每个 commit 都有 code review,都有对应的连接,能找到修 bug 还是 feature。几乎每个逻辑都有单测,覆盖率要求 80%,服务之间有集成测试,全部流程都是自动化,没有 QA 和 OP。Code review 基本能来回讨论几次,增进感情和知识分享。
        119
    ackfin01   37 天前
    刚开始挺高的,后来就不高了。
        120
    hmxxmh   37 天前
    和你差不多,上一家和现在得都是做的 to B 系统,用户少,基本逻辑走得通就行,基本不考虑性能优化,所以很肯定的是代码质量不佳,想做 to C 的。
        121
    yufeng0681   37 天前
    逻辑 /业务复杂的功能 /特性, 就要先写文档再开发; 重性能的就要关注数据结构的设计;
    简单的增删改查类的功能就放低要求,在上线过程中纠正,也不会很痛苦。
    这样重要模块增加的设计成本(文档,数据结构),就不那么多。
        122
    hantsy   37 天前
    @toyuanx Code review 那一步哪里去了?没有评审他们的代码是怎么提交上去的?
        123
    learnshare   37 天前
    多数项目都是面向上线编程(能用就行)
    + 文档资料缺失,后续更新维护很难
    + 没有测试代码,甚至没有完善的测试方案
    + 代码没法看,有 lint 不敢开
    + 领导甚至其他成员还不让你优化重构

    代码和应用质量通常跟公司业务好坏关系不大,所以领导们不想在这方面多花时间和精力
        124
    hantsy   37 天前
    @random0O 国外公司很多有自身的考虑,而不是说他们不愿意用成熟的框架。我之前遇到一个项目也是这样,他们不用 Spring 这些流行的框架,每个第三 LIB 引用全部要审核它的协议,保证使用没有法律风险。
        125
    fengjianxinghun   37 天前
    @hantsy 从来没听说过有什么 code review。
        126
    specita   37 天前
    一言难尽,毕业后在大厂,发现同事写的代码好厉害,简单明了,模块化
    后来回家乡的其它厂,一言难尽,反正他们的标准就是能运行起来就行了,其它无所谓
        127
    hantsy   37 天前
    @murmur 没错,国内很多创业公司上线都是在 3-6 个月左右。我之前参与过两个公司,都不到一年灰飞烟灭。只能说我没法适合国内的创业模式,各种套路招人,想各种方法(股权啊,什么发一部分以后融资了再补一部分工资)降低工资,加班加点,最后市场不接受,大家一起 88。以我的观点,那些没有两年以上规划的创业公司,基本上浪费人的青春。
        128
    gabezhao   37 天前
    原来都这样呀,哎
        129
    duanxianze   37 天前
    大家都一样啊。。。
        130
    zr8657   37 天前
    说真的,对绝大部分公司来说,能上线就不错了,剩下的过后再说,然后就没然后了
        131
    tt67wq   37 天前
    垃圾到爆炸
        132
    random0O   37 天前 via Android
    @hantsy 内部的东西倒是都挺成熟,但就是设计得和市面上常见的框架们不一样。数据库不支持外键,函数中一旦创建一个事务对象,所有被它调用的子函数只能使用这个事务,想再建都不行。Java 代码里每一步异步操作必须单独写个函数还不让调用,想在其他函数用它的结果必须将其返回值列为一个参数,框架会去找哪个函数的返回值匹配这个类型然后调用它。内部的其他服务,都因为历史原因各有一系列大坑。
        133
    hantsy   37 天前
    @kayv
    1. Code Review 大部分在 PR 上进行(创建 PR 之前的 Commits 可能是 Partial work,属于 Work in Progress 状态),反复讨论修改,Commit,直到所有没有什么意见,测试全部通过为止,合并代码。
    2. 到了一定规模的应用程序,可能不会每次合并就部署到生产环境前,加入有一个缓冲阶段,依然需要 UAT 环境部署,QA 测试,正式部署到 Production 之前进一步优化用户体验。
    3. DevOps 工程师有时还是不缺少的,虽然 Infrastructure as Code 可行,有时脚本也要人维护,而一些特殊的生产环境可能与开发环境完全脱离,部署人员也可能有专职的维护那些环境。还有有的公司出于安全考虑,开发人员可能接触不到部署环境的一些配置参数。
        134
    ZSeptember   37 天前
    哈哈哈,大家都一样。
        135
    youyeku   37 天前
    不高和你情况差不多。迭代又快新手害人。我自己都看不下去那写的代码,而且有些还是历史遗留问题,写的连重构的欲望都没有。
        136
    hslx111   37 天前
    代码越多坑越多,哪里都一样
        137
    52coder   37 天前
    我怀疑我们在同一个公司。
        138
    lijinxhua   37 天前
    嘶 早上九点到十二点是解决线上问题时间 你说惨不惨 日哦~这种情况已经延续一年多了。
        139
    donyee   37 天前
    java 项目代码不分层...一个类实现所有功能...
    有个公共类是小写的...
        140
    akira   37 天前
    所以 ,高质量的代码 的存在 只是一个传说?
        141
    UserANullPointer   37 天前
    每次产品升级时都告诉产品这块代码问题太多,要求延长时间。如果准了,就重构。
        142
    locoz   37 天前 via Android
    人少的就高…人多的就屎…
        143
    ARhen   37 天前
    我觉得我写的代码像是翔~ ;(
        144
    sumarker   37 天前   ♥ 1
    举个🌰
    ···
    return count > 0 ?true :false;
    ···
        145
    Dkngit   37 天前
    同一个世界,同一个屎码
        146
    catinsides   37 天前
    害,主业务能跑通就行了
        147
    loveuqian   37 天前 via iPhone
    第一版的代码挺漂亮
    后面慢慢改着改着就。。。
    前几天刚被自己 1 年半前写的代码恶心到了
        148
    gbin   37 天前 via Android
    你们的网站有完整的测试代码吗?包括单元测试,集成测试,e2e 测试这些。
    我司做的软件( UI 是个网站,但不是互联网产品)就有完整的测试链路,测试代码差不多是业务代码的 2-3 倍。代码逻辑不一定是最优的,但是代码质量真的还不错,总的来说,参与这样的项目我觉得挺荣幸的。
        149
    gbin   37 天前 via Android
    @akira 个人认为不是传说,可能国内互联网大部分是业务驱动,但大部分软件公司的产品代码质量还是可以保证的。
        150
    wangyzj   37 天前
    研发作为底层
    又能怎么样呢
        151
    laike9m   37 天前 via Android
    @hoyixi 正解。国内感觉路走歪了
        152
    kuangwinnie   37 天前
    @random0O 从字里行间看到了这个公司的技术沉淀之深
    一般这种限制都是之前有人踩过的坑 总结出来的
        153
    applehater   37 天前
    @loveuqian 我写的几年的都是这个鬼样,十行功能三十行 BUG。
        154
    cydian   37 天前 via Android
    @kayv 啥公司?
        155
    MrGba2z   37 天前
    看人 也看 review 的人

    之前写代码翻到过 guido 写的一部分底层核心代码 几千行的代码读起来真特么爽

    自己写过两次 Java 一次被(一个很严格的 senior ) review 了很久 翻来覆去改 基本被(一个很话痨逗比的 senior )直接 approve
        156
    MrGba2z   37 天前
    @MrGba2z
    后半句漏了句话:
    翻来覆去改 //... 第二次基本被(一个很话痨逗比的 senior )直接 approve
        157
    charlie21   37 天前
    @kayv 单元测试谁写阿
        158
    timle1029   37 天前
    @charlie21 难道不是谁写代码,谁就些 unit test/integ test/canary 么
        159
    pecopeco   37 天前 via Android
    默默重构
        160
    Kontinue   36 天前
    有注释都谢天谢地了。。。
        161
    zhanglihow   36 天前
    接手公司老的项目,那个框架,那个写法,渍渍,真心懒得改,也改不动。
        162
    Varobjs   36 天前 via Android
    @sumarker 这样的不要太多
    昨天还看到同事的
    flag = a == b ? true:false
    什么各种奇怪命名比如 bday
    要看到至少一百行之后,才能猜到这个 变量是什么意思
        163
    lei2j   36 天前 via Android
    我怀疑你偷看了我们公司代码
        164
    sunmoon1983   36 天前
    @loveuqian 同感,往往是第一次出需求以后的程序代码看着还不错,后来越加需求代码就余越烂!现在再看看以前的代码,感觉恶心!
        165
    kahoyip   36 天前
    我朋友:“已发布到测试环境”
    他领导:“上线”
    我朋友:“不先测试?”
    他领导:“先上线”
    ------上线后------
    他领导:“这里不对,不是 A,应该是 B,那里有问题”
        166
    caviar   36 天前 via Android
    实习呆过微软中国( azure ),开的第一个大 pr 一共改了 16 个 iterations,尽管我已经按照自己的最高标准要求自己了 233 感觉在那边每天主要的任务不是写代码,而是讨论 design.....不过后来我翻了翻 repo 里的代码,其实很多并没有那么高的质量(小声
        167
    qsbaq   36 天前
    公司自己弄的框架,4 个 function 文件,每个 3 万+行。还在持续增加中。
    已不想吐槽。。。
        168
    strongcoder   36 天前 via iPhone
    垃圾,太垃圾了,构建个包要 20 分钟,构建包的时候电脑不能动
        169
    pimpl   36 天前 via iPhone
    看到你们都这样,我就放心了。
        170
    Danielhu229   36 天前
    本来不高,被我强制搞了一波 Feature Branch 和单元测试,就高了
        171
    CoverL   36 天前
    看到你们都这样,我就放心了。
        172
    sudanlan   36 天前 via iPhone
    七拼八凑,一个 jQuery 有五六个版本,乱引用+随意增删,不同框架之间强行移植。。。公司国企,做的政府项目,前后端混合 😊
        173
    sumarker   36 天前
    所有的代码都 让步给了排期 ,
    结果..
    本来并不宽裕的排期 还要考虑兼容 /重构原来的功能
    时间更不够了...
        174
    zzzzzzzzyp   36 天前
    低的亚批
        175
    crazytudou   36 天前
    改别人的 Bug,维护开发的系统,每次看代码脑子都是脏话。而且为了节省时间加快进度,还得学着一样写垃圾。
        176
    ofblyt   36 天前
    现在越来越觉得代码维护就是击鼓传花,谁倒霉就在谁手里炸了
        177
    ken0328   36 天前
    看到大家这么回复我就放心了
        178
    doublechenpaul   36 天前
    像看完 21 天学通 Java 就来找工作的那种水平,培训班都不如
        179
    v2hh   36 天前
    我之前公司的系统没有 bug,就老板一个人用。。。
        180
    linZ   36 天前
    @crazytudou 刚刚写了好多*代码,感觉后面的人没法接了
        181
    clearbug   36 天前
    @gbin #148 老哥说的什么公司?
        182
    dosmlp   36 天前
    真的是"能跑起来能用就行"毫不夸张
        183
    charlie21   36 天前
    @timle1029 这是一项单独的工作,要考虑成本的,所以 如果没专人去做测试 ( 而是让 dev 开发 ) 那么结果就是 测试覆盖率很低很低,等于没有,等于自欺欺人
        184
    LunaSentinel   36 天前
    看到项目的时候很惊讶它竟然能跑起来,后来改造了 gradle 来优化项目结构和依赖,迁移了 k8s,增加了 ELK 支持,换了 zipkin, pinpoint, skywalking 链路追踪...但是独木难支,现在项目太急了,没空闲搞这些东西了,遇事不决就申请机器,拉个新项目,写的公共项目一引用,再也不想重构同事的代码了,管好自己就行,jenkins 编译的时候顺便就出 sonar 报告了,勤快看看就好了,严格律己宽容待人。
        185
    levelworm   36 天前
    @toyuanx 取其精华会不会最后就是注释基本没有 + 半天才理清楚 + 不注意缩进 + 冗余 + 没法交流。。。
        186
    xiaotianhu   35 天前
    @kayv 啥公司?
        187
    random0O   35 天前 via Android
    @kuangwinnie 也许设计成这样真的避免了很多 bug,但是几年十几年修修改改下来还是一团糟。今天我们依赖的众多存储服务之一出了一个 bug,导致我们核心功能整体挂掉。具体 bug 还没被找到,但是我去看了一下出事的那个文件,一万两千多行一个 Java 类,有九个方法,名字是 stageOne 到 stageNine。。。这个存储服务的体量是按 EB 计算的。
        188
    kuangwinnie   35 天前
    @random0O 哈哈哈哈哈哈哈好惨啊哈哈哈哈哈
    能不能打断点看看是哪边出了问题?
        189
    jourdon   34 天前
    进公司看到代码就后悔了,就是一坨屎。
    想着算了,跟老板说重构吧,想着说不同意就走人了,结果同意了(尴尬不).
    重构的过程是真痛苦,基础功能没写完就要求上线,老板说了,让用户去测试就好了,所以是一边写 BUG,一边等用户发现 BUG,然后改 bug,同时改需求,一个功能不管写没写完,一个字,改,又急着上线,结果出 BUG,再改,根本不知道要做个什么东西,一切随缘。
        190
    hp66722667   34 天前
    哈哈哈哈哈哈
        191
    dashixionglihai   34 天前
    甲方:我想要一个小汽车,能在告诉上跑的那种。
    乙方:容易,两个月开发完毕。
    一个月后
    甲方:能不能加个翅膀,我现在想让他可以飞。
    乙方:可以,加钱吧。
    半个月后
    甲方:能不能再加个炮桶?我想谁挡我路我就炸飞它。
    乙方:。。。
    十天后
    甲方:能不能加个车斗,有些货我想可以拉一些。
    乙方:出门左拐。
        192
    new2500   32 天前
    @kayv 啥公司+1.
        193
    kayv   31 天前
    血汗工厂亚马逊
        194
    toyuanx   31 天前
    @levelworm 您太幽默了
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2214 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 37ms · UTC 00:32 · PVG 08:32 · LAX 16:32 · JFK 19:32
    ♥ Do have faith in what you're doing.