1
solesschong 2013-06-17 11:23:24 +08:00 1
把Java写得像C着实不易,足见C功力之深。。。实在忍不住吐槽。
|
2
Golevka 2013-06-17 11:40:28 +08:00 1
把Java和C#当C用的掩面路过... 并表示这种imperative的语言我向来都只这么用
|
4
bombless 2013-06-17 12:20:14 +08:00
太习惯C了,那他java的抽象方式也用不好。
你还不如让它就用C风格,让他用java风格到时候会更糟糕。 |
5
jueying510 2013-06-17 12:28:39 +08:00
这个跟语言没关系,主要是项目开发规范不完善,同时开发人员在设计上缺乏多思考的缘故。目前这样的人很多,大家都想着快速交付功能,而忽略或者牺牲了代码质量,真的是饮鸩止渴。
|
6
clowwindy 2013-06-17 12:43:59 +08:00 2
代码写的烂就是写的烂,但不能说写得像 C 风格。
Java 和 C++ 的面向对象只是个语法糖。C 语言的项目可以设计成面向对象的。 比方说一个 dict 模块提供的 API 就是一个 struct dict 和一些以这个 struct 为第一个参数的一堆方法。 |
7
railgun 2013-06-17 12:49:05 +08:00
我也来吐槽一下,我接手的这个项目,之前的猛士硬是在ObjectiveC上面搭出了一个MFC风格的框架……
|
8
join 2013-06-17 12:51:10 +08:00
你见过哪个写c的是经常一个个大函数写的? 别黑我大c语言。
|
9
master 2013-06-17 12:53:30 +08:00
不能说写代码习惯不好就变成代码像C的风格吧
|
10
Mutoo 2013-06-17 12:55:28 +08:00
简单说是的面向过程思维已经僵化了吧。
|
11
moroumo OP |
12
xiaogui 2013-06-17 15:27:32 +08:00
其实,这有的时候也跟部分的傻×公司有关。比如需求一直变,今天要这个,明天要哪个,整天在做的大部分都是无用功。一说就是,我们要新加一个什么什么功能,下午能出来吗?
这种谁也扛不住。 |
13
jjx 2013-06-17 15:42:46 +08:00
结构化有结构化的好处, 如果用继承之类的, 整个类体系都要了解,看似简单,排错时更头疼
|
14
seeker 2013-06-17 15:47:46 +08:00
大部分老板对代码风格不太在意,只管你能make things done.
于是coder也没必要时刻想着代码的可维护啊,可扩展啊,只管搞定了事. 你花了几天时间给一个功能分好模块分好类,与此同时另外一个同事1天把功能完成,但是代码里面N多copy&paste,一个方法几千行.很不辛老板会赏识后者. |
15
chshouyu 2013-06-17 16:57:06 +08:00
珍爱生命 我用python
|
16
moroumo OP 大家都好现实啊,原来想做一个理想主义的coder还是很困难的啊。
主要的要有这设计的意识,至少有个基本的审美观吧。 半小时前接到新需求更改,这下可哭了。一些简单的需求是需要大改代码结构才能完成的。呵呵。 |
17
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; } |
18
chchwy 2013-06-17 17:53:33 +08:00
重點不是C的風格好或壞。
而是 "把Java寫得像C" 這件事,這明顯就違反了Java的風格, 當你違反了一個語言的風格,那就很難享受到該語言的好處。 |
19
chemhack 2013-06-17 17:54:50 +08:00
碰到很多了,javascript写的跟java一样,java写的跟c一样,c写的跟屎一样。。。。
|
20
wang2191195 2013-06-17 18:10:29 +08:00 via iPhone
@ivenvd 我擦 这种代码都能出现啊……
|
22
leegorous 2013-06-17 20:58:14 +08:00
连个风格都要给人吐槽,写代码真不容易啊
|
24
davepkxxx 2013-06-17 21:24:14 +08:00
果然厉害
|
25
ivenvd 2013-06-18 01:38:55 +08:00
@wang2191195 @kfc315 @jasontse 你们啊,Too Simple,这只是我随手找来的而已…… &_&
我们想用 Python 发个 POST 请求,都是 fork 出一个 curl,然后解析输出的…… &_& |
29
luikore 2013-06-18 22:23:58 +08:00 1
这是赞美吧...
|
30
colincat 2013-06-18 23:31:12 +08:00 via iPhone
我无力吐槽我自己,我写的代码别人都能看懂,难道我也是c风格?要怪就怪你们的架构师吧
|
32
alexrezit 2013-06-19 07:31:49 +08:00
|
35
pepsin 2013-06-19 17:17:39 +08:00
|
37
Abruzzi 2013-07-02 15:54:39 +08:00
@ivenvd 之前看了那个switch的代码愕然了,然后仔细一想好像也不是那么容易改,最后用反射写出来:
public void testSwitch(Integer i){ try { Field field = Constants.class.getDeclaredField("AGENT_" + i); agentType = (String)field.get("AGENT_" + i); } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e ) { e.printStackTrace(); } } 觉得还不如之前那样安全。 今天又看到你回复的数组,瞬间想捡砖拍死自己。 |
39
Hashell 2013-07-02 19:43:51 +08:00
@ivenvd ..真巧,我今天看到同事用delphi的代码,是sql语句的查询变量.看着一行行的复制修改变量名中的数字..我好奇,工作量好大.他说,PHP的话我也知道变量名可以改的.我不忍心轻声说了一句,PHP循环输出这段代码吧.他说快完成了.我不忍心,用数组的应该好点,不知delphi有没有数组的说法.他说,这个要试试..然后就用大括号把这段代码括起来,好像用数组去弄了..
|
41
kalintw 2013-07-02 19:48:09 +08:00
设计和写设计文档的时候不包括类设计和接口设计?设计好了怎么写成大函数?
|
42
summic 2013-07-02 19:49:26 +08:00
看到 PHP 写得像Java的,变量夸张的占掉了一行
|
43
angelface 2013-07-02 19:49:31 +08:00
这个写法我见的多了, 一个方法2000来行, 都是小意思, 就是用c语言好手也不会这么写, 所以, 和C真的没毛关系 。。。
|
44
akira 2013-07-02 20:07:18 +08:00
一个函数的长度尽量控制在25行以内,20年前老师教的。
|
45
dorentus 2013-07-02 20:21:48 +08:00 1
@Abruzzi 不要被那个 switch 代码的作者的逻辑绕进去……
一般这种,语言相关的性能问题暂且不论,我一般是会把 { 1 : Constants.AGENT_1, 13 : Constants.AGENT_13, ... } 这些放到一个字典容器里(或者干脆写成其它格式配置文件,在运行时加载),然后顶多再处理一些 Constants.AGENT_DEFAULT 的情形,就可以了。 |
49
marginleft 2013-07-02 22:30:16 +08:00 via iPad
@ivenvd 这是在凑字数?
|
50
jasontse 2013-07-02 23:04:43 +08:00 via iPad
这是V2EX吗?我怎么觉得我走错地方了。。。
|