本篇整理一下 Rails 开发实践的标准指南。 主要参考一篇 Github 上的文章,内容非常详细,观点很多。 下面只列举比较认同的观点。
1. DRY 原则 Don’t Repeat Yourself. 不要重复自己。 涵义是,系统中的每一个功能,都应该有唯一的实现。如果多次遇到同样的问题,就应该抽象出一个共同的解决方法,而不要重复开发同样的功能。项目中出现了重复的代码,应当通过重构,来消除代码的冗余。
2. KISS 原则 Keep it Simple Stupid. 保持简单、一目了然。 将软件开发中,遇到的问题,尽量简单化处理,让代码的实现,一目了然。 这样可以保证软件开发的可维护性和易理解性。复杂是大敌。
3. YAGNI 原则 You Aren't Gonna Need It. 你不会需要它。 意思是,在软件开发阶段,不要过度设计,要适可而止。快而省的完成软件的核心功能,让软件运行起来。而不要试图添加任何,你以为可能需要的功能。遵循该原则,可以节省早期开发的成本。
缩进使用空格,而不是制表符(tab) 使用两个空格,代替一个制表符(tab) 使用 Unix 行尾结束符 采用 UTF-8 编码格式
尽量写可以自解释的代码 如果一个方法的注释都很复杂,请重构这个方法 使用 YARD 为所有的类、模块和方法格式化注释
Rails Model 内的业务逻辑代码,请遵循下面的排序进行组织,方便查找和阅读。
class MyModel < ActiveRecord::Base # extends ................................................................. # includes ................................................................ # security (i.e. attr_accessible) ......................................... # relationships ........................................................... # validations ............................................................. # callbacks ............................................................... # scopes .................................................................. # additional config ....................................................... # class methods ........................................................... # public instance methods ................................................. # protected instance methods .............................................. # private instance methods ................................................ end
在斟酌是否使用 Monkey Patches 时,请优先考虑其他替代方案。 扩展和 Monkey Patches 的代码,请放于 lib/extensions 目录下。
|-project |-app |-config |-db |-lib |-extensions <-----
项目依赖的 Gem 版本,在发布到生产环境时,必须固定。这样可以保证应用的可靠性和稳定性。
# Gemfile gem 'rails', '4.1.8' # GOOD: exact specifier gem 'sass-rails', '~> 4.0.3' # GOOD: tilde specifier gem 'yell', '>=1.2' # BAD: unspecific gem 'jquery-rails' # BAD: no version specifier
虽然 Bundler 所使用的 Gemfile.lock 文件来解决依赖的 Gem 版本的问题。 但是,固定的版本,可以保证任何时候,执行 bundle install,或者不小心使用了 bundle update 都能获得正确的 Gem 版本。因此,为了保证应用的可靠性,在 Gemfile 中使用精确的定义,是最好的办法。
参考链接
Rails 3.2 Development Standards Guide
【翻译】Rails 3.2 开发标准指南
代码的抽象三原则
3 条必须知道的软件开发原则
2015-07-26