`
robbin
  • 浏览: 4831337 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137783
社区版块
存档分类
最新评论

rails项目为什么比Java项目好维护?

    博客分类:
  • Ruby
阅读更多
引用
Java程序你可以生成UML来读,可以很方便地navigate,这些便利在Ruby中享受不到。这是Ruby程序不好维护的一方面。

Java生成UML来读,但凡大一点的框架软件,UML图又大又复杂,根本看不出来头绪,这是不切实际的做法。

引用
另外一方面,由于语言本身的动态性,Ruby没有强大的IDE。这对接手维护的人来说确实是很头疼的一件事。

TextMate,Radrails,VIM对于编程的导航都很不错。但这不是最重要的。最重要的是rails项目的结构非常固定,每个文件也不大,该写什么不该写什么,框架都框死了。维护的人其实很容易的,他只要熟悉rails,根本不看代码就知道哪部分代码应该在哪里,哪部分功能在什么地方实现。这是rails相对于Java来说的一个很大的优势。使用Java,倘若你接手的项目使用的框架你没有接触过,那根本无从下手,即使大家使用同样的框架,但是自己进行了高层的不同方式的封装,你想看出来头绪,仍然要费很大的力气,但对于rails来说,不存在这些问题。

如果大家不信,我随便举两个例子。首先对比一下Java的开源博客软件roller,这是用struts/hibernate开发的,如果你能在一周之内彻底搞清楚roller的全部结构,那我得承认你的Java编程水平在我之上;再看看rails的开源博客软件typo,我半天就可以把typo全部代码实现细节全部都搞得清清楚楚。再来对比Java的开源论坛软件JavaBB,这个简单一些,但是结构也有一定复杂度,然后再对比rails开源论坛软件rforum,哪个容易阅读,哪个更加容易维护,这是昭然若揭的事实。

所以,rails开发的项目要远比Java开发项目好维护,特别你招聘新员工来进行维护,两者差距拉得更大。

引用
用Java比较容易写得好维护,毕竟这么多年的积累有很多的best practice,甚至还从best practice发展出来工具、框架。而Ruby这方面的积累还比较少,没有很多清楚的guideline来帮助你,也没有什么工具可以利用,一切都要靠自己

其实你说的正好相反,只要你不要太炫耀ruby的技巧,代码都是很好阅读的。rails编程为什么没有那么多模式和最佳实践,是因为rails已经把模式和最佳实践做在框架里面了,已经全副武装了,你直接拿来就用了。反而是Java,就算有了Spring/Hibernate/Webwork照样是在裸奔,没有代码生成机制,没有单元测试框架,没有测试数据设施,没有RESTFul URL机制,没有DB Migration,没有AJAX集成,没有实现好的分页机制,没有做好的Mock对象,没有现成的页面模板和装饰器,一切都要靠自己。



分享到:
评论
8 楼 carlosbdw 2007-08-02  
目前日本的java框架也是目录固定的,甚至更加智能,web画面一句java代码也不用写
7 楼 rasonyang 2007-04-17  
java 框架可以借鉴ROR!
实际上可以通过Maven 2维护项目的目录组织结构,
也可以借鉴appfuse 2.0实现ROR的scaffold机制。
改改Struts 2,也可以实现Restful 2,甚至不需要annotation.
Sitemesh就可以提供装饰器.
Freemarker可以提供模板。
封装EXT JS 1.0不是一件难事,用rails封装,和用java封装,难度都差不多。当然得承认RJS确实比标签封装js要容易一些。
最关键的就像楼上说的,权限、工作流、门户、企业集成很多公司都有
现成的组件和产品,都改用rails确实不合适。
虽然永远达不到rails的开发效率,至少尽可能的接近rails还是有可能的。
6 楼 lyo 2007-04-16  
现在凡是公司都有自己的权限框架,工作流框架,oa框架等。这些都是可以在项目,产品中重用的,如果以后改用 rails的话,难道这些已有的构件都要重写?或者完全抛开不用了而用ruby另写新的? 这点就不切实际了吧? 
5 楼 ideage 2007-03-03  
Simple is BEST!
4 楼 tanjiazhang 2007-02-21  
Ruby代码看起来就比Java舒服多啦。
3 楼 hideto 2007-02-09  
好维护是因为框架定的比较死,所以很简单
框架定死了灵活性就差了
另外ror局限于功能简单的小项目
没有丰富的第三方库,ror永远长不大
2 楼 losing_fox 2007-02-09  
维护性这个东西我觉得在项目有一定规模的时候才可以讨论
1 楼 hiswing 2007-02-09  
是优势也是劣势.看你怎样看待了.

相关推荐

    ruby on rails 101

    - **测试**:介绍如何为Ruby on Rails项目编写单元测试和集成测试。 - **AJAX**:学习如何在Ruby on Rails应用中集成异步JavaScript和XML技术。 - **部署、安全与性能**:讲解如何部署Ruby on Rails应用、实施安全...

    Ruby on Rails实践之路给PHP和Java开发者的书

    通过这本书,PHP和Java开发者可以了解到RoR如何提供一个高效且优雅的开发环境,理解其核心理念,从而更好地融入到Ruby on Rails的开发世界中。同时,书中还可能包含实际项目案例,帮助读者将理论知识应用于实践,...

    rails magazine issue 3

    这对于希望参与开源社区并为 Ruby on Rails 项目做出贡献的开发者来说,是极其宝贵的信息。 ##### 4. 设计模式在 Ruby 中的应用 **知识点:** Khaled al Habache 讲解了设计模式在 Ruby 中的运用,特别关注 ...

    Code Review&JRuby on Rails

    5. **项目实践**:提供了一些实际的JRuby on Rails项目案例,展示如何在Java环境中搭建和运行Rails应用。 6. **迁移策略**:对于已有Java项目的团队,可能会讲述如何平滑地将部分功能迁移到JRuby on Rails。 通过...

    rails框架指南.pdf

    不像Java框架那样通常需要多个框架配合使用,Rails提供了一个集成了诸多功能的单一解决方案,从而减少了项目中所需协调和集成不同框架的复杂性。 在比较Java和.NET平台时,Java社区提供了丰富的框架选择,但这也...

    深度剖析Ruby vs Java误区

    为了促进这种和谐共存,Halloway提倡为JRuby项目贡献代码,以及在Java应用中采用Rake替代Ant进行构建管理,这将有助于融合两种语言的优点,推动跨语言的协作和发展。总的来说,选择Ruby还是Java应基于项目的实际需求...

    《web开发敏捷之道 应用rails进行敏捷web开发》(第一版)的depot源代码

    10. **敏捷开发**:敏捷开发是一种迭代、增量的软件开发方法,强调灵活性和客户满意度,书中会介绍如何在Rails项目中应用敏捷实践,如持续集成、短迭代周期和用户故事。 通过研究和运行"depot"源代码,你可以亲身...

    Ruby.on.Rails.Enterprise.Application.Development

    ### Ruby on Rails企业应用开发详解 #### 一、引言 《Ruby on Rails Enterprise Application Development》这本书由...通过学习本书,你可以更好地理解和掌握Ruby on Rails在构建复杂企业级应用方面的优势和技巧。

    java开源包8

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

    ruby和rails简介

    1. **MVC架构**:Rails采用了模型-视图-控制器(Model-View-Controller, MVC)架构模式,将应用程序逻辑划分为三个相互独立的部分,有助于提高代码的组织性和可维护性。 2. **DRY原则**:“Don't Repeat Yourself”...

    rails magazine issue 4

    - **重要性**:对于开发者而言,了解Rails的发展趋势有助于规划个人或项目的技术栈发展方向。 - **应用场景**:适用于正在使用或考虑使用Ruby on Rails进行开发的团队和个人。 ##### 2. Fine Articles on Ruby & ...

    java开源包6

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

    java开源包9

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

    java开源包4

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

    java开源包101

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

    java开源包5

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

    java开源包10

    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...

Global site tag (gtag.js) - Google Analytics