论坛首页 Java企业应用论坛

“过度设计”之真实例子

浏览 85178 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-09-29  
这个其实不应该怪项目经理,这种架构应该算是很典型的Spring+Strtus+IBatis的项目,而且还典型得比较老土。

怪只怪很多搞Java的人跳不出Java思想的圈圈,老是觉得用Java很厉害,要做就做高性能、高扩展性、易维护的应用。所以搞了N多模式和接口进去,导致需要写的东西越来越多。

我也是受害者之一,如果加上单元测试、测试数据还有相关配置的话,的确很恼火。这也是Java的传统文化和限制所制,但我们还是应该好好反思。

多多了解下Rails的思想和Rails like框架,会改变很多人的开发理念的。

可惜Java上面的Rails like框架不多。


0 请登录后投票
   发表时间:2010-09-29  
IcedCoffee 写道
ggpp224 写道
同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。

不用再跟他解释了..就是个新手..


明显不是把所有的JS写在一个文件只,我们会把一些用JS封装的组件写在JS的,而是把业务写在JSP文件中, 因为JSP文件里没有任何的HTML代码,首先要搞清楚项目,我们这个就是个管理系统,实现 添加删除修改查询 的功能。
0 请登录后投票
   发表时间:2010-09-29  
bonny 写道
ggpp224 写道
同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。



extjs这样做很合理,因为思想已经非常接近CS了。不过传统的web开发还是写在一起比较好。


extjs我也做了一年呢。


这些都是前台的东西和整个架构关系不大...
重点是lz说后面的service和dao都可以不要了..
0 请登录后投票
   发表时间:2010-09-29  
看你是写玩具还是写摩天大楼了。你喜欢的话直接用最原始的方法全部写在一个jsp里面也可以啊,那就更简单了。有兴趣可以看我 web开发的轮回 一文。
0 请登录后投票
   发表时间:2010-09-29  
matt.u 写道
这个其实不应该怪项目经理,这种架构应该算是很典型的Spring+Strtus+IBatis的项目,而且还典型得比较老土。

怪只怪很多搞Java的人跳不出Java思想的圈圈,老是觉得用Java很厉害,要做就做高性能、高扩展性、易维护的应用。所以搞了N多模式和接口进去,导致需要写的东西越来越多。

我也是受害者之一,如果加上单元测试、测试数据还有相关配置的话,的确很恼火。这也是Java的传统文化和限制所制,但我们还是应该好好反思。

多多了解下Rails的思想和Rails like框架,会改变很多人的开发理念的。

可惜Java上面的Rails like框架不多。




对啊,现在一些项目,其实可以设计的非常简化, 大家如果看过《敏捷软件开发》就知道了, 不应该一直沉迷于老的设计方案, 社会在进步,技术也在进步, 从以前的机器码到现在的高级语言编程, 这就是一种进化的过程
0 请登录后投票
   发表时间:2010-09-29  
我也遇到雷同的问题,不仅如此,那个包啊多的可绕地球两圈了!看了我真晕,更晕的是,每个包下面就一两个文件,咱也不好说,反正他认为这样非开符合“标准”啦!
0 请登录后投票
   发表时间:2010-09-29  
lpn520 写道
xhdwell 写道
jasph77 写道
构架师 自然有架构师考虑。。
要不然人家怎么坐上这个位置,你还是一个普通的程序员。
架构师也是个人,他的架构必然也有不完美地方。

最讨厌那种,整天说这个不好、那个行,自己又没解决方案。

确实,以前javaeye上有篇文章说的就是别老骂别人的代码烂,说的很在理。在你没完全理解别人设计的思路之前千万不要妄下结论。别人这么设计是有他的道理的,只是有些原因你还不能理解。你在没有完全理解前就说他过度设计只能说你学的还不够。再过2年你就不会这么说了。


兄弟,哪句看到我骂人了

没说你骂人啊。我说以前有个帖子的标题是《别老骂别人的代码烂》。不是在说你骂人。
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
xhdwell 写道
bonny 写道
呵呵 这个8个文件的设计是比较正常的老式的设计。最近的设计一般都会简化。

helloworld.js这个文件可省,可以写在jsp中,这样减少很多文件,减少很多代码查找和切换快捷键,也减少了http请求数。

service接口可省,直接用实现类即可。这和面向接口设计比较违背,不过多数情况下的确是个累赘。
serviceimpl多数情况下(增删改查)也可以省略掉,action直接调用dao即可。除非有比较复杂的业务操作和多dao关联。


dao可以用泛型简化通用操作,并用代码生成器生成。




这样看来,仅仅需要些的就是jsp  action (serviceimpl) 代码已经非常简化了。


helloworld.js能不能省主要看js的实现是否复杂,我的习惯是分开写,否则JSP会很长,很不好维护。
service接口不能省,他使得业务与控制层完全解耦。
action直接调用dao也不可以,action是control层,主要是负责控制转发的,并不处理业务,如果直接调dao就参与了业务处理,更有可能把事务处理也带进了action中。
分层的好处不在与开发简单,而是便于维护。不要为了开发一时的简便而让你的维护变成一潭没人敢碰的烂泥。


1,一般上,引入了完善的js验证框架的基础上,js代码很少写的很长。如果写的很长,即时你放在一个单独的js文件中,维护依然是个问题,你说呢?

2,sercie接口的存在的确是可以完全解耦,可是有意义么?难道你还想换表现层,或者在不改任何业务层代码的基础上换表现层,我可以告诉你;即时有接口层,你发现先几乎没有一个项目可以做到这点。

在测试方面,没有接口也可以一样测试的很好。

3,dao被action直接调用,我说的是单dao的增删改查,你不要跟我提事务。




事实上我觉得维护最大的问题不是分层清晰,而是要别人理解你的设计;这个是次要的问题。一个人一个想法,终究会乱的。

分层清晰,只是让别人更容易理解你的设计和想法,大家保持一致,更容易理解和交流。


0 请登录后投票
   发表时间:2010-09-29  
yangguo 写道
看你是写玩具还是写摩天大楼了。你喜欢的话直接用最原始的方法全部写在一个jsp里面也可以啊,那就更简单了。有兴趣可以看我 web开发的轮回 一文。


哈哈,兄弟,就是这么回事,受教了
0 请登录后投票
   发表时间:2010-09-29  
Java中闻名的框架就那么几个,人家Example这么写,当然很多就跟着这么学了。
目前在跟进Play中,貌似还比较Rails Like。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics