![]() | 1 solesschong 2013-06-17 11:23:24 +08:00 ![]() 把Java写得像C着实不易,足见C功力之深。。。实在忍不住吐槽。 |
![]() | 2 Golevka 2013-06-17 11:40:28 +08:00 ![]() 把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 ![]() 代码写的烂就是写的烂,但不能说写得像 风格。 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 ![]() 这是赞美吧... |
![]() | 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 ![]() @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吗?我怎么觉得我走错地方了。。。 |