1
cominghome 2019-11-28 19:33:10 +08:00
我倒是想知道他是怎么把面向对象写成面向过程的,居然还提测了
|
2
LeeChP OP @cominghome
全是方法类,没有一个抽象,没有一个接口。 |
3
LeeChP OP @cominghome 他们说,他们独立测试测过了。但是他们根本不考虑联合测试!
|
4
petelin 2019-11-28 19:55:44 +08:00 via iPhone
@cominghome 只要没有思考 没有抽象 组织 结构的写法 都是面向过程的
顺序的写代码。或者叫一次性代码 |
6
LeeChP OP @petelin 你说的没错,没有任何思考。没有任何思考。对接起来,有一些我需要调用到他们的方法,都没有办法复用,百分之八十以上需要重写。状态校验根本就是糊弄
|
7
TypeError 2019-11-28 23:53:06 +08:00 via Android
怎么招进来的
|
8
sagaxu 2019-11-29 01:09:51 +08:00 via Android 2
模块之间的 API 都没定好,你们就能开始写代码了吗?如果是这样,团队里一个靠谱的人都没有。
模块之间符合 API 定义,你管人家内部怎么实现,即使一个接口和抽象类都没有又有什么关系?写一堆接口,然后大部分接口只有一种实现,我觉得那是过度封装。 |
9
trait 2019-11-29 01:27:32 +08:00 via iPhone
这种人适合 go,不用动脑子想什么内存管理组织结构,随便瞎写也有 gc 兜底
|
10
LeeChP OP @sagaxu api 其实早就讨论烂了,但是文档不看,代码不看,之前忙,我也没空看他们代码!我根据需求来,他们是想什么就做什么。就在前几天提醒他们添加状态切换标记,实例代码都给他们,剩下的就是体力活了,还他妈的不乐意,要手把手教,那还不如我自己去做。
现在是由于他们自己的模块没有做完整,状态触发检验缺失,我相当于在扩展他们的模块功能,由于他们没有做封装,我两个状态量的检验就 cv 到了他们三个类中,第一版本有接近 40 个!大量重复性代码,改拆的不拆,抽象几个基类出来,或者做成接口,能省多少精力?明白这种做法缺失什么了嘛?没错,缺乏可拓展性,可维护性。典型的写一个版本就跑路的做法! 这样说,就相当于,我要 A 实现跑的行为,我要去 A 写一个跑的方法,我要 B 实现走路的行为,要去 B 类中写一个走的方法在他们模块中,我要 C 实现竞走这个行为,要去 C 类中实现竞走的方法!这种级别的抽象,他们都做不来。没错,就是这种级别的抽象! 由于每一个行为都是被观察的对象,但是他们不做抽象,所以我每一个类中都要去实现一个 subject 接口,然后覆写添加,移除,通知的方法,惊不惊喜,刺不刺激,意不意外? |
11
charlie21 2019-11-29 05:49:06 +08:00 via iPhone
啥项目阿 网站么
|
12
df4VW 2019-11-29 07:00:28 +08:00
上 gRPC 吧。。专治各种天马行空
|
13
sagaxu 2019-11-29 09:24:07 +08:00 via Android
@LeeChP 这事很复杂吗,模块职责和边界划分好,API 订好,集成不起来,追责也就明确了。API 没定好是设计的锅,实现不好是具体开发的锅。
把经常出锅的人排除在项目之外,团队合作会越来越顺畅。一有问题就自己上去扑火,对自己对团队氛围都不好。 |
14
kneep 2019-11-29 09:30:15 +08:00 via iPhone
搞 C 的人转 Java,不用看哈,肯定就是工具类加静态方法
|
16
Junjunya 2019-11-29 11:48:36 +08:00
看了半天,感觉这事和 C 语言有啥关系,明明是开发水平的问题
|
17
LeeChP OP @Junjunya 因为他们的代码像极了我处于用 c 写 hello. word 那时候的水平。因为就算用 C.该解耦的依旧能解耦,只不过没有那些高大上名词罢了
|
18
aldenchang 2019-11-29 13:26:29 +08:00 via iPhone
面向对象不会用…c 语言躺着中枪
|
19
phx13ye 2019-11-29 14:16:40 +08:00 1
我寻思 redis 和 linux-kernel 代码写的挺漂亮的啊
|
20
ivvei 2019-11-29 14:20:37 +08:00
没看懂你在说什么东西,能给点代码举个例么。
|
21
Nazz 2019-11-29 15:38:35 +08:00
和 java 出身的人一起写 golang, 我也很难受
|
22
wellhome 2019-11-29 17:03:42 +08:00 via iPhone 1
没看懂,有些业务真心没觉得一定要 oo.
oo 不是万能药,这个抽像那个抽像 你怎么不把 printf 抽像了? |
23
xpol 2019-11-29 17:30:13 +08:00 via iPhone
你说的这些都是个人工程能力、不关 C 语言的事。
|
24
axwz88 2019-11-29 17:41:13 +08:00 via Android
@wellhome 歪个楼,我也很反感这种为了抽象而抽象,为了封装而封装,什么鸡毛都要做成接口,脱裤子放屁(不是针对楼主)
|
25
strider 2019-11-29 17:44:58 +08:00
这个跟 c 语言没关系。
|
27
uyhyygyug1234 2019-11-29 20:17:33 +08:00
@df4VW 这个可以详细讲讲么
|
30
wellhome 2019-11-29 20:29:13 +08:00 via iPhone
@axwz88 我也不是针对楼主。我看到一共只有三四行的类,就脑仁疼,而且名字都是老长老长的,这得亏有 ide 自动补齐,否则光敲这些个名字就累死人
|
31
inwar 2019-11-30 10:32:56 +08:00 via Android
写 c 的日常是全局变量函数返回 void,入参当作指针用。我接过这样的 java,比楼主难过
|
32
IGJacklove 2019-11-30 13:10:21 +08:00
@wellhome Java 这边就是这种风格的,方法或参数的名字尽量表达明确,长不是问题,就怕 来个 int n, m 这种的,我看个代码参数还要看上下文才能明白。
|
33
yingo 2019-11-30 14:59:39 +08:00
和语言无关
|
34
shawnsh 2019-11-30 15:52:41 +08:00
C 语言也有接口,抽象
|
35
xsen 2019-11-30 16:38:29 +08:00
Java 这种为了抽象而抽象还算好的,毕竟灵活度没 C++高。恶心的就是,用 C++做的,然后为了设计而设计,为了抽象而抽象——简单点就是过度设计,用烂了,一堆坑,全是坑。
—————————————————————— 更恶心的是没注释,没文档;变量命名用的全是缩写——有拼音缩写的,有英文缩写的 当然,代码量还大,将近上百 M 的代码量 这也是为什么很多人现在,毕竟喜欢 go 那样的风格。简单,清晰——语言层面提供足够多的基础功能 |
36
xsen 2019-11-30 16:41:05 +08:00
楼主说的这种呢,就是需要一个人,把整个框架搭建起来,定义清晰的接口,实现模块或子系统之间的接口层
然后子模块子系统内部,你管他怎么做 还有,建议没事不要用继承了,很容易滥用,不可控。组合配合清晰的设计,是最理想的 |
37
firefox12 2019-11-30 21:42:51 +08:00
我寻思着 这里就没一个靠谱的人, 缺一个架构师, 需要一个人在 2 个团队 在交互前,把你们交互的方式 方法 如何调用,公共定义,职责都定义清楚。然后 大家面向接口编程,至于别人的代码怎么写,写多烂你管得着吗? 只要给你的接口可以工作,就 ok. 这里最大的问题 是根本没人搞过这个, 还说别人烂? 这就是项目管理烂, 架构设计烂,代码烂不烂的已经不重要了。
我买的是个门锁,只要能装上去,插上钥匙可以打开 就可以,你管我里面是怎么工作的。你根本没定义门锁和门的接口,还来说我门锁设计得不好? |
38
mikulch 2019-12-02 22:16:14 +08:00 via iPhone
工程能力好的人可遇不可求,而且有时候这些人工资不一定高。因为做的都是一些细的,似乎不太明显的活。
|