据我经验,Ruby和Ruby on Rails一直是最难真正掌握的语言/框架组合之一。对于C、C++和Java程序员而言,Ruby有着非常不同(很不好)的OO设计方法,Rails有太多需要理解和记忆的主张。依我的水平,我已经花了不少时间 ------ 我坚信还有很长的路要走 -------我爱它,并坚持到底。
我对Ruby on Rails人数保持增长私下表示过怀疑,仍然有很多开发者沉湎于Java形式的OO思想,这也是很多人正在学的;这是非常好。同时,它也是坏事,因为垃圾代码源于其他的垃圾代码,在发布或被其他人查看的时候。
ThriveSmart雇佣了更多的开发者------他们不都是Ruby或Ruby on Rails专家------有必要确保代码和设计模式在跨项目中保持一个较高的质量水准。My good friend Dan和我整理了这个清单,便于小组应用到他们的每个项目里。
这是一个不断更新的清单,下面只是临时的片段。
以下略
解释
清单上的每一条对于经验丰富的Ruby on Rails开发者比较熟悉、不值一提了 ------但是对新手而言,还需一些解释。往下看:
(1)每个controller action 仅仅调用一个model方法而不是初始化的find或new。必要时,自定义一些 .net 或 .update的方法.
胖模型、瘦控制器是Rails编码最提倡的方法论------但是它太开放,以至于很难按照我的方式说明。通常,你把所有的逻辑堆在了model里,因此你的controler看起来和script/generate产生的controller一模一样------除了自定义方法,你只是把通常的.new 和 .update_attributes方法按相同方式处理。举一个简单的例子,有一个额外的逻辑,属性被一个特定的user更新:@foo.update_attributes_by_user(params[:foo], current_user)。
额外逻辑应该放在controller、而非model中仅仅当它要渲染不同的action或做出不同的跳转。
(2)仅仅一个或两个实例变量在controller或view之间共享。
实例变量hell很容易出现在Rails里------当controller和view共享很多实例变量时。它潜在地会损害性能,由于你会重复调用一些未知的关联。相反,你的controller应该仅仅控制一个实例变量------或许还有一个current_user。这样,所有的关联均可以“按需”调用,并在一个地方成为实例变量缓存。
该方法同样适用于片段缓存,因为在实际载入关联之前,你可以检查一下view中的缓存。
例如,你的Blog controller不必建立实例变量@post和@related_posts,仅仅建立一个方法,@post会给出Post模型中的related_posts 方法,因此你只需在view层调用@post.related_posts。
(3)所有的model和变量名要简明(对新手)、尽可能短、但不要使用英文缩写。
命名比较难。特别对于那些专心一个应用程序的开发人员------当你头脑中载入整个应用程序上下文时,它或许明显,但对于后来的你或别人就不太明显啦。
Ruby和Ruby on Rails其中伟大之处在于命名简明扼要、可读性强,哪怕对新人。不要破坏它的强大力量!
如果你不能马上想到一个灵巧的、清晰的、短名字,先编码你的方法,然后试着丢掉刚才的代码环境。在一天结束的时候,放一个TODO进去、重新命名变量或方法名称。
(以下待翻译)
原文地址: http://www.matthewpaulmoore.com/articles/1276-ruby-on-rails-code-quality-checklist
分享到:
相关推荐
这份"一些高质量的学习Ruby的资源清单"压缩包,显然是为了帮助初学者和有经验的开发者找到丰富的学习材料,提升Ruby编程技能。以下是根据压缩包内容可能包含的一些关键知识点的详细解释: 1. **Ruby基础**:Ruby的...
此外,Rails 引入了DRY(Don't Repeat Yourself)原则,旨在减少代码重复,提高代码质量。 Ruby 语言本身以其简洁、表达性强的语法受到开发者喜爱。在Rails中,Ruby的元编程特性使得创建动态和灵活的应用变得简单。...
**Rails**,全称为 **Ruby on Rails**,是一种用于构建 Web 应用的开源框架,由 David Heinemeier Hansson 在 2004 年首次发布。Rails 自诞生以来,便以其独特的设计理念迅速吸引了全球开发者的关注。随着 Web 2.0 ...
【标题】:“我的购物清单”是一个基于Ruby on Rails框架构建的应用程序,旨在提供个人或团队的购物管理功能。Ruby on Rails(简称Rails)是用Ruby语言开发的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器...
1. **Ruby on Rails框架**:Ruby on Rails是基于Ruby语言的Web开发框架,使用MVC架构,遵循DRY原则,便于快速开发和维护高质量的Web应用。 2. **Web应用程序**:pantry是一个Web应用,用户可以通过浏览器访问并使用...
从“发光清单后端”的描述来看,我们可以推断这个项目可能是使用Ruby on Rails构建的一个Web应用,其主要功能可能是让用户存储他们的化妆创意,然后以某种形式进行展示或者分享。Rails中的“模型”(Model)可能包含...
9. **测试**:Rails和React都有丰富的测试工具,如RSpec和Capybara(Rails)以及Jest和Enzyme(React),用于编写单元测试和集成测试,保证代码质量。 通过这个项目,开发者可以学习到前后端分离开发的最佳实践,...
在IT行业中,编程语言是构建数字世界的基石,而Ruby作为一种优雅、简洁且充满表达力的脚本语言,深受开发者喜爱。...通过学习和应用这样的哲学,开发者不仅能提高代码质量,还能增强自己在复杂项目中的适应性和韧性。
10. **测试和调试**:使用RSpec或Mocha等工具进行单元测试和集成测试,确保代码质量。 这个项目展示了如何将现代Web开发技术与创新的用户体验相结合,为用户提供一种安全、私密的任务管理方式。对于学习者来说,...
8. **测试**:利用RSpec等Ruby测试框架编写自动化测试,保证代码质量。 9. **持续集成/持续部署(CI/CD)**:可能使用Jenkins、Travis CI等工具实现代码自动构建和部署。 10. **许可证问题**:开发者需注意软件许可...
- **测试**:应用可能包含了RSpec或Minitest这样的测试框架,以确保代码的质量和功能的正确性。 通过这些技术的组合,og_wishlist创建了一个友好且功能丰富的愿望管理平台,不仅方便个人记录和追踪自己的心愿,也为...
本书《Web开发敏捷之道第三版》是一本深入探讨如何使用Ruby on Rails框架进行高效、敏捷的Web开发的技术书籍。书中通过一个完整的示例项目——Depot应用程序,循序渐进地介绍了Rails框架的核心概念和技术,并结合...
尽管标签中没有提及,但为了持久化存储愿望清单,我们可能需要使用像ActiveRecord这样的ORM(对象关系映射)框架,它是Ruby on Rails的一部分。ActiveRecord简化了与SQL数据库的交互,允许我们通过Ruby代码操作...
10. **自动化测试**:Rails提供了Rspec和Capybara等工具进行集成测试,确保代码质量和功能的正确性。 要深入学习这个项目,你可以从阅读README文件开始,然后逐步探索项目的目录结构,查看Gemfile了解依赖,研究app...
- Web框架:如Django(Python)、Express.js(Node.js)或Ruby on Rails,用于构建Web应用。 - API接口:可能与Google Maps API、Yelp API或其他餐饮服务API集成,获取地理位置和评论等信息。 - 前端技术:HTML、CSS...
- 可能使用了Node.js、Django、Ruby on Rails等后端框架来处理HTTP请求,存储和检索数据。 - 数据库管理:数据库如MySQL、PostgreSQL、MongoDB等,用于持久化存储待办事项数据。 6. **版本控制**: - 项目可能...
3. **后端技术**:如果这个项目是Web应用,那么后端可能使用了Node.js(Express框架)、Python(Django或Flask)、Java(Spring Boot)或Ruby on Rails等。后端主要负责处理用户请求、数据交互和业务逻辑。 4. **...
- **Ruby on Rails**:以其简洁和优雅著称,能够以较少的代码实现复杂的功能,但需要先掌握Ruby语言。 总之,成为一名合格的Android开发者需要长期的学习和实践积累。每个阶段的知识点都相互关联,缺一不可。在这个...