`
hideto
  • 浏览: 2678794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails程序开发的最大问题是代码规范

    博客分类:
  • Ruby
阅读更多
使用Rails开发大型复杂B2B应用一年了,这个项目目前开发人员达到近20人
现在感觉最痛苦的事情就是大家没有遵循统一的代码规范
我一直建议PM要设立一个项目架构师的角色,来统一大家的代码规范,但是PM不听
因为Ruby这种动态语言太灵活,大家各自写个各自的代码,相互之间很难看懂别人的代码
Controller、Model、View、Js、CSS等等文件目录的设立也是各模块小组之间各自为政
现在系统越来越复杂,各模块之间的协调和交互也越来越多
但是由于没有人来盯统一的代码规范和设计,大家的交流变得非常痛苦
换句话说,看见别人的代码和自己的代码风格迥异感觉很不爽
分享到:
评论
64 楼 刑天战士 2008-08-29  
其实关键是在人,很多时候,工具只能帮助人,但不能替人解决问题。

PS:这里面好多freewheel的……
63 楼 冉翔 2008-08-29  
<div class='quote_title'>woody_420420 写道</div>
<div class='quote_div'>
<div class='quote_title'>liusong1111 写道</div>
<div class='quote_div'><br/><span style='color: #ff0000;'>人太多了,</span><span style='text-decoration: line-through;'>代码也太多了,</span><span style='color: #ff0000;'>没法搞。</span><br/></div>
<br/><span style='color: #ff0000;'>我以为昨晚你早早就洗洗睡了。。。</span><br/>……<br/></div>
<p> </p>
<p>OMG </p>
<p> </p>
<p>ORZ</p>
<p> </p>
<p> 囧囧囧</p>
62 楼 liusong1111 2008-08-29  
hideto 写道
看来是业务模块划分不够好是一个原因
理想状态下A和B模块完全分离

如果是公用plugin或lib的设计,则需要各team leader参与review


如果开发任务太紧急,4~5人小团队的话人手肯定不够
说到底还是项目管理的事,不见得是Rails特有的弊端


nod,在邮件标题上分级?


61 楼 hideto 2008-08-29  
看来是业务模块划分不够好是一个原因
理想状态下A和B模块完全分离

如果是公用plugin或lib的设计,则需要各team leader参与review


如果开发任务太紧急,4~5人小团队的话人手肯定不够
说到底还是项目管理的事,不见得是Rails特有的弊端
60 楼 liusong1111 2008-08-29  
hideto在开会.
我们UI部门分了四个小组,两个业务开发组,一个基础设施和运维组,一个QA组,平均每个组5个人.
hideto提出的问题,我理解还是怎样高效的整体知识分享和反馈,这个职责原本应该在基础组里,可是基础组成员也有开发任务,精力和执行力度不够,不能全局实时负责.
具体的问题,等hideto会开完了,请他讲讲.
59 楼 jack 2008-08-29  
赫赫,别说多人团队,就我一个人的项目,都可以让代码动态动态再动态,结果过一周去看代码,绕不出来了。所以rails不合适多人团队是一个问题,另外还得要看团队成员是否做到恰到好处的问题。如果没有自控能力,rails和ruby可u不停的翻花样玩,都是没有问题的,不过后果吗...
58 楼 robbin 2008-08-29  
hideto,我觉得你们公司的RoR项目团队太大了。

我个人的体会是,用RoR开发,项目团队不需要太大,保持在5人规模以内比较合理,团队规模一大,比较容易失控。我个人觉得你们应该把团队拆分为5个小团队,每个小团队负责一个功能模块,相对隔离开。

不过Rails这个框架似乎并没有考虑过大规模团队协作的问题,DHH他们37signals也就4个程序员而已,在这方面,Rails似乎不如django,不像django那样可以轻松的划分模块,进行团队协作。

事实上我在两年前就下过这样的结论,认为Rails不适合大规模团队协作开发,这也是Rails在企业应用方面面临的比较大的缺陷之一。
57 楼 jack 2008-08-29  
刑天战士 写道
fnet 写道
PHP以及几乎所有的动态语言一样有这个问题.

我想是否可以这么认为:

这些语言还不是真正的工业语言


java一样有,而且不比动态语言少,我原来公司就是这样,看到那代码想揍人……



工业语言,为什么要如此之定义, 代码写的不好看,还是不是个人因素.应该说写代码的人不是工业人.
56 楼 neora 2008-08-29  
20人的RoR团队?够胆!
hideto果然是为RoR在中国商业领域探索道路的一代先驱...
55 楼 lsyong 2008-08-29  
很多时候团队里并不需要那么多人,但是领导觉得人多力量大,而且组建团队的时候根本没给下面人提建议的机会。比如我上家公司,一个项目拆成两块,每块一组人做,每组一个项目经理,有时还互相推任务,10多个人干了大半年,整得一团糟,而实际上那工作量,5个人足矣。
54 楼 刑天战士 2008-08-29  
fnet 写道
PHP以及几乎所有的动态语言一样有这个问题.

我想是否可以这么认为:

这些语言还不是真正的工业语言


java一样有,而且不比动态语言少,我原来公司就是这样,看到那代码想揍人……
53 楼 hideto 2008-08-29  
当然需要单元测试,但是仅仅测试是不够的
测试能保证功能,又如何保证设计和规范?
花花公子 写道
是单元测试重要还是代码规范重要?模块之间的相互调用我认为是单元测试重要,毕竟单元测试是代码的第一使用者。
如果是html,js,css,那么基本上要通过培训,code review来规范。

52 楼 QuakeWang 2008-08-29  
woody_420420 写道

2.象"Pair Programming"一样,来个"Team Programming"怎么样?每个星期一,选一个同学从自己的代码中挑一段代码,花20分钟给所有member解释什么的干活,然后,周一到周五就是娱乐时间,大家可以针对这段代码发表任何意见(格式,规范,性能。。。)。到下周一,此同学来总结,得到多少建议,他将接受哪些,不接受哪些。。。如果发现一些普遍问题,我们可以抽取出来形成团队的官方coding文档(变量命名,注释风格。。等等)。当然,我想的这个过程并不是要优化某一段代码,只是通过这个过程,同学们都能在一起交流关于coding规范,团队风格的总总问题。

我们以前也做过,不过不是挑自己的代码,而是挑别人的代码,可以是自己看不懂的,或是自己有更好解决方法的,也可以用团队quiz的方式来做,比如我之前翻译的一篇文章:
http://www.iteye.com/topic/200008
对于整个团队的风格,技术提升都有帮助。
51 楼 fnet 2008-08-29  
PHP以及几乎所有的动态语言一样有这个问题.

我想是否可以这么认为:

这些语言还不是真正的工业语言
50 楼 woody_420420 2008-08-29  
花花公子 写道
是单元测试重要还是代码规范重要?。

在我心中,我觉得都重要!如果要量化,我觉得是6/4开。单元测试6,代码规范4
49 楼 woody_420420 2008-08-29  
liusong1111 写道

人太多了,代码也太多了,没法搞。

我以为昨晚你早早就洗洗睡了。。。昨天躺床上一直想这个问题睡不着,胡思乱想了些如下内容:
1.确实,团队大了,项目规模大了,结队(频繁的结队)不是太现实。但是我觉得凡事只要“度”把握得合适,总会有所收获。比如,项目事太多,可以一个星期找个同学结队改一,两个bug。。。之类的。在这个过程中,我们可以逐步总结,积累。总会有更好的实践的。
2.象"Pair Programming"一样,来个"Team Programming"怎么样?每个星期一,选一个同学从自己的代码中挑一段代码,花20分钟给所有member解释什么的干活,然后,周一到周五就是娱乐时间,大家可以针对这段代码发表任何意见(格式,规范,性能。。。)。到下周一,此同学来总结,得到多少建议,他将接受哪些,不接受哪些。。。如果发现一些普遍问题,我们可以抽取出来形成团队的官方coding文档(变量命名,注释风格。。等等)。当然,我想的这个过程并不是要优化某一段代码,只是通过这个过程,同学们都能在一起交流关于coding规范,团队风格的总总问题。

说到底,我觉得要解决这个问题,拿我原来一同事的话来说:一定要“沟流,交通”!大家各自闷着写自己的代码肯定不行。叫一个牛b人指定一套规范,官方推广也不行。还是得从内而外。

七零八落的一些想法吧~现在还晕,没啥组织,大家将就看看,有啥意见使劲交流。

PS: 看到规范,就想了太多以至失眠。。。我想最主要的原因还是原来一家公司的经历: 项目组一同学惊现的一些诸如:btn_fu*k,iNoName。。。之类的代码,还有不堪入目的项目。。。往事阿~
48 楼 花花公子 2008-08-29  
是单元测试重要还是代码规范重要?模块之间的相互调用我认为是单元测试重要,毕竟单元测试是代码的第一使用者。
如果是html,js,css,那么基本上要通过培训,code review来规范。
47 楼 neodoxy 2008-08-29  
ltian 写道
火星叔叔马丁 写道
v教 主,俺也不说啥了,就是求你别再把好好的帖子弄成口水帖锁了...

你不知道Rails来扯什么代码规范

V Lord您自重


我恰恰认为口水帖都是象您这样的人的出现才产生的。就是论事,我只是对楼主提出的问题说了我的想法,当然表达这些想法不仅仅是针对楼主,而是对所有看帖对同样问题有兴趣的同行,至于我说得对与不对,也是技术方面的。至于你,我建议您多为论坛做些技术上有意义的事情,而不是成为论坛上的骂街能手,这对论坛的氛围和您个人都有好处。

群众的眼睛是雪亮的,您消停吧
46 楼 gigix 2008-08-28  
liusong1111 写道
人太多了,代码也太多了,没法搞。


超过10个developers的团队是令人不快的
因为我没办法一边做事一边听清楚另外10个人在说什么
如果是另外4个或者6个人就完全没问题
45 楼 liusong1111 2008-08-28  
gigix 写道
woody_420420 写道
我们可以在团队内部制订一个框架性的规范(不是面面俱到的模板),如果可能,尽量频繁交叉结对(共产主义?),如果发现代表性的问题,可以定期以邮件,会议的方式告知团队所有的成员。。。时间久了,我想团队内部自然而然可以形成特有的编码风格与规范。

这个,才是正道
结对
每天(或者两天,或者半天)轮换结对
所有人拥有所有代码
我们有一个实践:每天早上花10~20分钟,把昨天所有的修改svn diff出来,大家一起review一遍
这是在结对之外的team review
频率高,高到近乎实时的监督,才能有效
代码写出来之后两周才review的话,是不会有印象的


人太多了,代码也太多了,没法搞。

相关推荐

    7-享洗-Rails 代码规范1

    针对北京交通大学享洗自助洗衣系统的开发,项目负责人王子杰制定了详尽的Ruby on Rails(简称Rails)代码规范,旨在确保代码的清晰度、可读性和一致性。以下是对这些规范的详细解读。 1. **排版规范** - **1-1 ...

    The Rails 4 Way

    - **Rack**:Rack是Ruby Web应用的一个接口规范,Rails基于Rack实现了自己的请求处理流程。 - **ActionDispatch**:ActionDispatch是Rails中处理HTTP请求的核心模块,负责解析请求并将请求分发到合适的控制器方法。 ...

    Beginning Ruby on rails 源代码

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。本资料包包含了《Beginning Ruby on Rails》一书的源代码...

    ruby on rails 101

    - **约定优于配置**:几乎不需要配置文件,预定义的目录结构和命名规范减少了代码量,简化了维护工作。 - **最佳实践**:采用MVC(Model-View-Controller)架构模式,分离业务逻辑、数据管理和界面展示。 #### 六、...

    agile web development with rails 4th edition 源代码

    《敏捷Web开发与Rails 4th Edition》是Rails框架领域内一本广受欢迎的教程书籍,其源代码提供了丰富的实例和实践案例,帮助开发者深入理解Rails 3的应用开发。本源码包包含了书中所讲解的各种示例项目的代码,是学习...

    inspinia admin - v2.5 Rails_Full_Version

    12. **Rails最佳实践**:学习并遵循Rails社区推崇的最佳实践,如命名规范、代码结构和风格,以提高代码可读性和维护性。 当你解压"Rails_Full_Version"并开始开发时,可以参考这些知识点逐步构建和定制你的后台管理...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    Rails提供了快速开发Web应用的工具,减少了大量样板代码,提高了开发效率。当Rails与JRuby结合时,开发者可以在Java平台上构建高性能的Web应用,同时保留Rails的开发便利性。 本书可能会涵盖以下知识点: 1. **...

    应用Rails进行敏捷Web开发(第2版)

    《应用Rails进行敏捷Web开发(第2版)》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。Rails是Ruby语言的一个开源Web开发框架,它倡导DRY(Don't Repeat Yourself)原则,强调...

    Ruby_On_Rails笔记

    Ruby on Rails是一个使用Ruby语言编写的开源Web应用框架,它使用了“约定优于配置”(convention over configuration)的开发哲学,旨在减少代码量和提高开发效率。Rails框架的核心是遵循MVC(模型-视图-控制器)...

    Ruby-RailsBlueprint是一个可以轻松快速地创建Rails5应用程序的样板

    Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web开发框架,它遵循MVC(模型-视图-控制器)架构模式,旨在使开发过程更高效、更简洁。Rails Blueprint正是为了加速Rails 5应用的搭建而设计的一个工具,...

    rails magazine issue 3

    Ruby on Rails(简称 Rails)是一种用于开发 Web 应用程序的模型-视图-控制器(MVC)框架,使用 Ruby 编程语言编写。它以“约定优于配置”(Convention over Configuration)和“不要重复自己”(Don't Repeat ...

    Rails Best Practices

    Rails最佳实践是提升代码质量和可维护性的关键,下面将详细介绍一些重要的Rails开发规范和技巧。 1. **DRY (Don't Repeat Yourself)**:DRY原则是Rails的核心哲学之一,提倡避免重复的代码。通过创建模块化、可重用...

    Beginning.Rails.3

    3. **RESTful架构支持**:Rails 3继承了对RESTful架构的支持,使Web应用的设计更加规范和一致。 4. **强大的数据库抽象层**:Active Record模式提供了一种灵活的方式来处理数据库操作,简化了数据访问代码。 5. **...

    ruby on rails资料

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,强调“约定优于配置”的原则。Ruby语言以其简洁、优雅的语法著称,而...

    Agile Web Development with Rails.pdf(英文)

    - **编写代码的最佳实践**:如何编写清晰、可维护的代码,包括命名规范、注释规则等。 - **Rails框架的核心特性**:例如Active Record模式、RESTful设计原则等。 - **敏捷开发流程**:如何将敏捷开发理念融入到Rails...

    rails-handbook:描述Infinum Rails团队使用的开发过程

    《Rails Handbook:Infinum团队的开发流程揭秘》 Rails Handbook 是一份由Infinum公司Rails团队编撰的详尽指南,旨在分享他们所采用的高效开发流程与最佳实践。这份手册涵盖了Ruby on Rails框架的各个方面,从项目...

    Agile Web Development With Rails第三版

    2. **Rails框架架构**:Rails采用MVC(Model-View-Controller)设计模式,讲解如何组织应用程序的代码结构,包括模型层的数据处理、视图层的展示逻辑和控制器层的业务逻辑协调。 3. **ActiveRecord**:Rails中的ORM...

    rspec-rails-examples:RSpec速查表和Rails应用程序:了解如何从模型代码库中专业测试Rails应用程序

    了解如何从模型代码库中专业测试Rails应用程序对于那些想知道如何使用RSpec测试Rails应用程序的开发人员来说,这是一个简短而全面的参考。 在这里,您将找到带有详细文档的深入示例,这些文档详细说明了如何使用...

    关于Rails登录和验证插件http_authentication restful-authentication

    Rails是一个流行的开源Web应用程序框架,基于Ruby编程语言。在Rails应用中实现用户登录和验证是构建任何Web服务的基础。本文将深入探讨Rails中的http_authentication和restful-authentication插件,这两种方法都常...

    Rails相关电子书汇总二

    标题“Rails相关电子书汇总二”表明这是一份关于Ruby on Rails框架的电子书集合,主要聚焦于如何构建Web应用程序。Rails是Ruby编程语言的一个开源Web应用框架,它遵循MVC(模型-视图-控制器)架构模式,以其DRY(Don...

Global site tag (gtag.js) - Google Analytics