当你有那种把 Java 当 c 语言写的同事时,你很难不心态爆炸! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeChP
V2EX    职场话题

当你有那种把 Java 当 c 语言写的同事时,你很难不心态爆炸!

  •  
  •   LeeChP 2019-11-28 19:28:50 +08:00 7747 次点击
    这是一个创建于 2143 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目终于进入了第一版的测试。开始对接了。原本的模块能单独运行,但是对接不上。因为他们就没考虑到状态控制。简单的观察者模式加简单多线程就行。花了一周帮他们填上了。
    对接,测试,心态爆炸,就测了两个状态,我就侵入了他们很多子模块。没有接口,没有抽象。我不得不各种 cv。服了。40 多个状态量,我不想玩了。明天开会就提重构的事。
    38 条回复    2019-12-02 22:16:14 +08:00
    cominghome
        1
    cominghome  
       2019-11-28 19:33:10 +08:00
    我倒是想知道他是怎么把面向对象写成面向过程的,居然还提测了
    LeeChP
        2
    LeeChP  
    OP
       2019-11-28 19:46:38 +08:00 via Android
    @cominghome
    全是方法类,没有一个抽象,没有一个接口。
    LeeChP
        3
    LeeChP  
    OP
       2019-11-28 19:47:37 +08:00 via Android
    @cominghome 他们说,他们独立测试测过了。但是他们根本不考虑联合测试!
    petelin
        4
    petelin  
       2019-11-28 19:55:44 +08:00 via iPhone
    @cominghome 只要没有思考 没有抽象 组织 结构的写法 都是面向过程的
    顺序的写代码。或者叫一次性代码
    petelin
        5
    petelin  
       2019-11-28 19:56:50 +08:00 via iPhone
    @petelin 当然这里不是贬低面向过程 实际上 面向过程是代码片段的一个组成部分
    LeeChP
        6
    LeeChP  
    OP
       2019-11-28 20:55:24 +08:00 via iPad
    @petelin 你说的没错,没有任何思考。没有任何思考。对接起来,有一些我需要调用到他们的方法,都没有办法复用,百分之八十以上需要重写。状态校验根本就是糊弄
    TypeError
        7
    TypeError  
       2019-11-28 23:53:06 +08:00 via Android
    怎么招进来的
    sagaxu
        8
    sagaxu  
       2019-11-29 01:09:51 +08:00 via Android   2
    模块之间的 API 都没定好,你们就能开始写代码了吗?如果是这样,团队里一个靠谱的人都没有。

    模块之间符合 API 定义,你管人家内部怎么实现,即使一个接口和抽象类都没有又有什么关系?写一堆接口,然后大部分接口只有一种实现,我觉得那是过度封装。
    trait
        9
    trait  
       2019-11-29 01:27:32 +08:00 via iPhone
    这种人适合 go,不用动脑子想什么内存管理组织结构,随便瞎写也有 gc 兜底
    LeeChP
        10
    LeeChP  
    OP
       2019-11-29 04:27:31 +08:00 via Android
    @sagaxu api 其实早就讨论烂了,但是文档不看,代码不看,之前忙,我也没空看他们代码!我根据需求来,他们是想什么就做什么。就在前几天提醒他们添加状态切换标记,实例代码都给他们,剩下的就是体力活了,还他妈的不乐意,要手把手教,那还不如我自己去做。

    现在是由于他们自己的模块没有做完整,状态触发检验缺失,我相当于在扩展他们的模块功能,由于他们没有做封装,我两个状态量的检验就 cv 到了他们三个类中,第一版本有接近 40 个!大量重复性代码,改拆的不拆,抽象几个基类出来,或者做成接口,能省多少精力?明白这种做法缺失什么了嘛?没错,缺乏可拓展性,可维护性。典型的写一个版本就跑路的做法!
    这样说,就相当于,我要 A 实现跑的行为,我要去 A 写一个跑的方法,我要 B 实现走路的行为,要去 B 类中写一个走的方法在他们模块中,我要 C 实现竞走这个行为,要去 C 类中实现竞走的方法!这种级别的抽象,他们都做不来。没错,就是这种级别的抽象!

    由于每一个行为都是被观察的对象,但是他们不做抽象,所以我每一个类中都要去实现一个 subject 接口,然后覆写添加,移除,通知的方法,惊不惊喜,刺不刺激,意不意外?
    charlie21
        11
    charlie21  
       2019-11-29 05:49:06 +08:00 via iPhone
    啥项目阿 网站么
    df4VW
        12
    df4VW  
       2019-11-29 07:00:28 +08:00
    上 gRPC 吧。。专治各种天马行空
    sagaxu
        13
    sagaxu  
       2019-11-29 09:24:07 +08:00 via Android
    @LeeChP 这事很复杂吗,模块职责和边界划分好,API 订好,集成不起来,追责也就明确了。API 没定好是设计的锅,实现不好是具体开发的锅。

    把经常出锅的人排除在项目之外,团队合作会越来越顺畅。一有问题就自己上去扑火,对自己对团队氛围都不好。
    kneep
        14
    kneep  
       2019-11-29 09:30:15 +08:00 via iPhone
    搞 C 的人转 Java,不用看哈,肯定就是工具类加静态方法
    LeeChP
        15
    LeeChP  
    OP
       2019-11-29 10:35:12 +08:00 via Android
    @sagaxu 当然不复杂,就是很不愉快。都是些啥开发呀我靠
    Junjunya
        16
    Junjunya  
       2019-11-29 11:48:36 +08:00
    看了半天,感觉这事和 C 语言有啥关系,明明是开发水平的问题
    LeeChP
        17
    LeeChP  
    OP
       2019-11-29 12:27:32 +08:00 via Android
    @Junjunya 因为他们的代码像极了我处于用 c 写 hello. word 那时候的水平。因为就算用 C.该解耦的依旧能解耦,只不过没有那些高大上名词罢了
    aldenchang
        18
    aldenchang  
       2019-11-29 13:26:29 +08:00 via iPhone
    面向对象不会用…c 语言躺着中枪
    phx13ye
        19
    phx13ye  
       2019-11-29 14:16:40 +08:00   1
    我寻思 redis 和 linux-kernel 代码写的挺漂亮的啊
    ivvei
        20
    ivvei  
       2019-11-29 14:20:37 +08:00
    没看懂你在说什么东西,能给点代码举个例么。
    Nazz
        21
    Nazz  
       2019-11-29 15:38:35 +08:00
    和 java 出身的人一起写 golang, 我也很难受
    wellhome
        22
    wellhome  
       2019-11-29 17:03:42 +08:00 via iPhone   1
    没看懂,有些业务真心没觉得一定要 oo.
    oo 不是万能药,这个抽像那个抽像
    你怎么不把 printf 抽像了?
    xpol
        23
    xpol  
       2019-11-29 17:30:13 +08:00 via iPhone
    你说的这些都是个人工程能力、不关 C 语言的事。
    axwz88
        24
    axwz88  
       2019-11-29 17:41:13 +08:00 via Android
    @wellhome 歪个楼,我也很反感这种为了抽象而抽象,为了封装而封装,什么鸡毛都要做成接口,脱裤子放屁(不是针对楼主)
    strider
        25
    strider  
       2019-11-29 17:44:58 +08:00
    这个跟 c 语言没关系。
    pipi32167
        26
    pipi32167  
       2019-11-29 20:13:02 +08:00
    @wellhome std::cout,你值得拥有
    uyhyygyug1234
        27
    uyhyygyug1234  
       2019-11-29 20:17:33 +08:00
    @df4VW 这个可以详细讲讲么
    LeeChP
        28
    LeeChP  
    OP
       2019-11-29 20:19:32 +08:00 via Android
    @wellhome 大量相同的方法,行为不一样,为什么不做个接口或者父类出来呢?
    LeeChP
        29
    LeeChP  
    OP
       2019-11-29 20:21:26 +08:00 via Android
    @axwz88 大量的相似类,你们真的不考把他们抽象个父类出来吗?
    wellhome
        30
    wellhome  
       2019-11-29 20:29:13 +08:00 via iPhone
    @axwz88 我也不是针对楼主。我看到一共只有三四行的类,就脑仁疼,而且名字都是老长老长的,这得亏有 ide 自动补齐,否则光敲这些个名字就累死人
    inwar
        31
    inwar  
       2019-11-30 10:32:56 +08:00 via Android
    写 c 的日常是全局变量函数返回 void,入参当作指针用。我接过这样的 java,比楼主难过
    IGJacklove
        32
    IGJacklove  
       2019-11-30 13:10:21 +08:00
    @wellhome Java 这边就是这种风格的,方法或参数的名字尽量表达明确,长不是问题,就怕 来个 int n, m 这种的,我看个代码参数还要看上下文才能明白。
    yingo
        33
    yingo  
       2019-11-30 14:59:39 +08:00
    和语言无关
    shawnsh
        34
    shawnsh  
       2019-11-30 15:52:41 +08:00
    C 语言也有接口,抽象
    xsen
        35
    xsen  
       2019-11-30 16:38:29 +08:00
    Java 这种为了抽象而抽象还算好的,毕竟灵活度没 C++高。恶心的就是,用 C++做的,然后为了设计而设计,为了抽象而抽象简单点就是过度设计,用烂了,一堆坑,全是坑。


    更恶心的是没注释,没文档;变量命名用的全是缩写有拼音缩写的,有英文缩写的
    当然,代码量还大,将近上百 M 的代码量

    这也是为什么很多人现在,毕竟喜欢 go 那样的风格。简单,清晰语言层面提供足够多的基础功能
    xsen
        36
    xsen  
       2019-11-30 16:41:05 +08:00
    楼主说的这种呢,就是需要一个人,把整个框架搭建起来,定义清晰的接口,实现模块或子系统之间的接口层
    然后子模块子系统内部,你管他怎么做

    还有,建议没事不要用继承了,很容易滥用,不可控。组合配合清晰的设计,是最理想的
    firefox12
        37
    firefox12  
       2019-11-30 21:42:51 +08:00
    我寻思着 这里就没一个靠谱的人, 缺一个架构师, 需要一个人在 2 个团队 在交互前,把你们交互的方式 方法 如何调用,公共定义,职责都定义清楚。然后 大家面向接口编程,至于别人的代码怎么写,写多烂你管得着吗? 只要给你的接口可以工作,就 ok. 这里最大的问题 是根本没人搞过这个, 还说别人烂? 这就是项目管理烂, 架构设计烂,代码烂不烂的已经不重要了。


    我买的是个门锁,只要能装上去,插上钥匙可以打开 就可以,你管我里面是怎么工作的。你根本没定义门锁和门的接口,还来说我门锁设计得不好?
    mikulch
        38
    mikulch  
       2019-12-02 22:16:14 +08:00 via iPhone
    工程能力好的人可遇不可求,而且有时候这些人工资不一定高。因为做的都是一些细的,似乎不太明显的活。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5536 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:48 PVG 16:48 LAX 01:48 JFK 04:48
    Do have faith in what you're doing.
    ubao 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