吐槽一下,同事把java写的像C

2013-06-17 11:11:13 +08:00
 moroumo
公司内基本都是用java开发的。前段时间我转入一个新项目组,这个项目组建立几年了。和几个已在项目组的老员工一起开发了新项目,现在code进入到review阶段。写核心代码的两个同事,一个资深的,一个毕业一年的。我在review代码的时候,发现这两个同事基本不讲究OO设计之类的。代码就是几个大函数,基本没有抽象。要说是C风格,也是比较差的C风格,模块划分也是比较差的。
项目至少会持续两年左右,迭代开发,会不停的增加feature。所以后续再增加代码可能非常痛苦。

我虽是老员工,但是相对这个项目组,还很新。有几次旁巧側击的提过代码的问题,回答就是项目紧,或者refactor也就一两天的事,不着急。按照多年的经验,代码一旦完成,老板很难给时间去refactor的。
7688 次点击
所在节点    程序员
50 条回复
solesschong
2013-06-17 11:23:24 +08:00
把Java写得像C着实不易,足见C功力之深。。。实在忍不住吐槽。
Golevka
2013-06-17 11:40:28 +08:00
把Java和C#当C用的掩面路过... 并表示这种imperative的语言我向来都只这么用
moroumo
2013-06-17 12:08:06 +08:00
@Golevka 这么用也没什么。但项目大了以后,抽象后的代码更好增加新feature,好维护。
bombless
2013-06-17 12:20:14 +08:00
太习惯C了,那他java的抽象方式也用不好。
你还不如让它就用C风格,让他用java风格到时候会更糟糕。
jueying510
2013-06-17 12:28:39 +08:00
这个跟语言没关系,主要是项目开发规范不完善,同时开发人员在设计上缺乏多思考的缘故。目前这样的人很多,大家都想着快速交付功能,而忽略或者牺牲了代码质量,真的是饮鸩止渴。
clowwindy
2013-06-17 12:43:59 +08:00
代码写的烂就是写的烂,但不能说写得像 C 风格。

Java 和 C++ 的面向对象只是个语法糖。C 语言的项目可以设计成面向对象的。

比方说一个 dict 模块提供的 API 就是一个 struct dict 和一些以这个 struct 为第一个参数的一堆方法。
railgun
2013-06-17 12:49:05 +08:00
我也来吐槽一下,我接手的这个项目,之前的猛士硬是在ObjectiveC上面搭出了一个MFC风格的框架……
join
2013-06-17 12:51:10 +08:00
你见过哪个写c的是经常一个个大函数写的? 别黑我大c语言。
master
2013-06-17 12:53:30 +08:00
不能说写代码习惯不好就变成代码像C的风格吧
Mutoo
2013-06-17 12:55:28 +08:00
简单说是的面向过程思维已经僵化了吧。
moroumo
2013-06-17 13:52:20 +08:00
@join @master
的确不是想黑C,我也是C语言出身的。C用好struct和指针,划分好模块,写出的代码也是非常优雅的。
只是除了代码的语法是java外,再怎么看代码组织或者思维,都是C的。
xiaogui
2013-06-17 15:27:32 +08:00
其实,这有的时候也跟部分的傻×公司有关。比如需求一直变,今天要这个,明天要哪个,整天在做的大部分都是无用功。一说就是,我们要新加一个什么什么功能,下午能出来吗?
这种谁也扛不住。
jjx
2013-06-17 15:42:46 +08:00
结构化有结构化的好处, 如果用继承之类的, 整个类体系都要了解,看似简单,排错时更头疼
seeker
2013-06-17 15:47:46 +08:00
大部分老板对代码风格不太在意,只管你能make things done.
于是coder也没必要时刻想着代码的可维护啊,可扩展啊,只管搞定了事.
你花了几天时间给一个功能分好模块分好类,与此同时另外一个同事1天把功能完成,但是代码里面N多copy&paste,一个方法几千行.很不辛老板会赏识后者.
chshouyu
2013-06-17 16:57:06 +08:00
珍爱生命 我用python
moroumo
2013-06-17 17:20:30 +08:00
大家都好现实啊,原来想做一个理想主义的coder还是很困难的啊。
主要的要有这设计的意识,至少有个基本的审美观吧。

半小时前接到新需求更改,这下可哭了。一些简单的需求是需要大改代码结构才能完成的。呵呵。
ivenvd
2013-06-17 17:23:37 +08:00
这也值得吐槽?看看我们的代码:

switch(i){
case 1:
agentType = Constants.AGENT_1;
break;
case 2:
agentType = Constants.AGENT_2;
break;
case 6:
agentType = Constants.AGENT_6;
break;
case 10:
agentType = Constants.AGENT_10;
break;
case 11:
agentType = Constants.AGENT_11;
break;
case 12:
agentType = Constants.AGENT_12;
break;
case 13:
agentType = Constants.AGENT_13;
break;
case 20:
agentType = Constants.AGENT_20;
break;
case 21:
agentType = Constants.AGENT_21;
break;
case 22:
agentType = Constants.AGENT_22;
break;
case 23:
agentType = Constants.AGENT_23;
break;
case 24:
agentType = Constants.AGENT_24;
break;
case 25:
agentType = Constants.AGENT_25;
break;
default:
agentType = Constants.AGENT_DEFAULT;
}
chchwy
2013-06-17 17:53:33 +08:00
重點不是C的風格好或壞。
而是 "把Java寫得像C" 這件事,這明顯就違反了Java的風格,
當你違反了一個語言的風格,那就很難享受到該語言的好處。
chemhack
2013-06-17 17:54:50 +08:00
碰到很多了,javascript写的跟java一样,java写的跟c一样,c写的跟屎一样。。。。
wang2191195
2013-06-17 18:10:29 +08:00
@ivenvd 我擦 这种代码都能出现啊……

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

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

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

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

© 2021 V2EX