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

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

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

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

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

把经常出锅的人排除在项目之外,团队合作会越来越顺畅。一有问题就自己上去扑火,对自己对团队氛围都不好。
kneep
2019-11-29 09:30:15 +08:00
搞 C 的人转 Java,不用看哈,肯定就是工具类加静态方法
LeeChP
2019-11-29 10:35:12 +08:00
@sagaxu 当然不复杂,就是很不愉快。都是些啥开发呀我靠
Junjunya
2019-11-29 11:48:36 +08:00
看了半天,感觉这事和 C 语言有啥关系,明明是开发水平的问题
LeeChP
2019-11-29 12:27:32 +08:00
@Junjunya 因为他们的代码像极了我处于用 c 写 hello. word 那时候的水平。因为就算用 C.该解耦的依旧能解耦,只不过没有那些高大上名词罢了
aldenchang
2019-11-29 13:26:29 +08:00
面向对象不会用…c 语言躺着中枪
phx13ye
2019-11-29 14:16:40 +08:00
我寻思 redis 和 linux-kernel 代码写的挺漂亮的啊
ivvei
2019-11-29 14:20:37 +08:00
没看懂你在说什么东西,能给点代码举个例么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX