`

GitHub的Ruby代码规范

 
阅读更多
   最近开始接触Ruby和Rails的开发,个人是一个疯狂迷恋编写代码边format的编写方式,看到摆的凌乱的代码就会有一种无法言说的焦躁感,同样的习惯被我带到了Ruby的学习过程中,可是应该如何确定Ruby源文件的format呢? GitHub公布了他们的答案:

Ruby Style Guide:https://github.com/bbatsov/ruby-style-guide

源代码布局方面:

1、所有源文件以UTF-8编码
2、使用2个空格的缩进
3、使用Unix风格的换行符(\n),windows(\r\n)。可使用git config --global core.autocrlf true 防止产生windows风格的换行符。
4、在‘,’,‘;’后,操作符(除指数操作之外),‘{’,‘}’的前后增加空格,增加代码的可读性。
5、在‘(’,‘)’,‘[’,‘]’符号后不要加空格。
6、Case和When处于同一代码层次。
7、2个def之间使用一个空行隔开
8、对于一个方法有多个参数导致太长的时候,按如下方式处理
def send_mail(source)
  Mailer.deliver(to: 'bob@example.com',
                 from: 'us@example.com',
                 subject: 'Important message',
                 body: source.text)
end

9、使用Rdoc生产系统的API文档,在注释和def之间不要有空行。
10、每行不超过80行
11、每行的结尾不要有空白字符。

语法方面:

1、一个方法如果没参数就省略括号,有参数就使用括号
2、如无必要,不要使用for,而使用each做循环
3、不要使用then
4、使用三元操作?:代替if,else。
5、不要在if else的内部使用?:操作符
6、使用when X then ...,因为when x ....在ruby1.9被删除了
7、使用&&和||做boolean操作,使用and,or做流程控制。
8、unless和else不要一起用
9、除非是判断条件涉及赋值操作,否则不不需要括起来
10、把多行语句块使用{}包含,
11、不需要使用的return的时候就不要用
12、不要使用‘\'连接2行代码
13、使用||=来初始话变量,但是不能用来初始化boolean变量
14、不要使用perl风格的变量名,$1-9之类的
15、运行Ruby的时候,加上“-w”以提示我们代码中不好的地方
16、使用Ruby1.9的语法写lambda和hash

命名规范:
1、使用小写+“_"命名变量和方法
2、使用首字母大写命名Module和Class
3、使用全大写+”_"命名常量
4、对于返回值是boolean的方法加个“?”后缀
5、对于一些有潜在风险的方法加“!”后缀,比方说有exit,修改了self,或者变量等等

注释:

1、关于注释就一条,代码即注释,

类:
1、符合liskov原则,子类可以替换父类。
2、尽量让类做到SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion)
3、为每个类都写一个to_s的方法以查看类的状态。
4、使用attr家族的方法做类属性的访问控制
5、考虑增加新的工厂方法做一些有意义的实例初始化工作。
6、使用DuckTyping而非继承。因为动态语言的特性,不在需要多态了。
7、避免使用@@,全局变量,
8、根据访问情况,合理使用访问控制符。
9、使用self来定义单例方法,而不是使用类名。

异常:
1、不要放过一些异常
2、不要使用异常做流程控制
3、不要捕获Exception,异常基类。
4、根据异常类型的覆盖面排列异常
5、把所有的外部资源放到异常捕获模块中
6、优先使用库自带的异常,而不是自己创建异常

集合:
1、优先使用%w创建字符串数组
2、按需创建数组
3、使用Set去除List中的重复元素
4、使用Symbol做Hash key,而不是String,不要使用可变对象做Hash Key。
5、不要在遍历一个列表的同时,又在改变它。

Strings:
1、使用“#{String} #{string}”优于String+String
2、未使用#{}形式的String时,使用‘’表示
3、在做实例变量的连接时,不要使用{}
4、使用<<而不是+做字符串串联

正则表达式:
1、使用命名组而非$1-9以便于跟踪。
2、‘^','$'表示匹配整行,匹配整个字符串应使用'\A','\Z'
3、使用’x'修饰符修饰复杂的regex语句,增加可读性,但是注意空格的去除问题

%的语法:
1、多使用%w
2、需要字符串内嵌表达式的时候使用%()
3、使用%r当正则表达式中出现多个/
4、不要使用%q ,%Q,%x,%W,%s这些字符
5、在%后优先使用()作为分隔符

后面还有关于元编程,MISC的写法指导,因目前还不了解其中的机制,无法理解,后续再补上

元编程:


MISC:



分享到:
评论
1 楼 pengisgood 2013-05-01  

相关推荐

    GitHub倡导的Ruby代码编写风格总结

    ### GitHub倡导的Ruby代码编写风格总结 #### 源代码布局 1. **编码格式**:所有源文件统一采用UTF-8编码。这有助于确保文本的一致性和国际化支持。 2. **缩进**:使用2个空格进行缩进,避免使用制表符。这种一致的...

    Ruby-Cane代码质量阈值检查可作为构建的一部分

    3. **文档检查**:Cane可以检查Ruby代码中的YARD文档注释是否完整。YARD是一种流行的Ruby文档生成工具,Cane确保每个公开的方法都有相应的文档,以便其他开发者能轻松理解代码功能。 4. **代码覆盖率**:虽然Cane...

    ruby-api-github-emoji:Ruby Demo 访问 Github Emoji API

    沿代码 规范 - 用例用户可以访问/查看 github 表情符号列表访问令牌可选:测试使用 API 的代码概括API 是应用程序使用的接口JSON HTTP GET、POST 等RESTful 路由戳 API 的工具curl - 命令行- Chrome在您的应用程序中...

    Ruby-Barkeep友好的代码评审系统

    2. **代码风格检查**:通过遵循特定的编码规范(如Ruby Style Guide),Barkeep可以帮助团队保持一致的代码风格,提高代码可读性和可维护性。 3. **复杂性度量**:Barkeep可以计算函数或方法的Cyclomatic复杂度,这...

    GitHub Copilot 教程.docx

    这款工具通过理解开发者正在编写的代码上下文以及项目中的风格规范来提供建议。Copilot 可以帮助开发者更快地完成函数编写、循环语句等常见的编码任务,并且支持多种编程语言,包括但不限于 TypeScript、Python、...

    Atom-urss,ultra-rss是另一个ruby提要rss解析器。通过在github上创建一个帐户来帮助zedtux/urss开发。.zip

    在提到的“Atom-urss.zip”压缩包中,包含的是“urss-master”这个项目,它可能是一个针对Ruby编程语言的RSS(Really Simple Syndication)解析器。RSS是一种XML格式,用于发布经常更新的内容,如博客文章或新闻摘要...

    Ruby语言教程&案例&相关项目资源

    - **GitHub上的Ruby项目**:GitHub是一个开放的代码托管平台,上面有许多优秀的Ruby项目可供参考。通过阅读别人的代码,你可以学到很多实用的技巧和最佳实践。 **7. 社区和论坛** - **Stack Overflow上的Ruby标签*...

    Learning Ruby

    4. **社区参与**:加入Ruby相关的开发者社区和论坛,如Stack Overflow和GitHub等,与其他开发者交流经验。 综上所述,Ruby作为一种功能强大且易于学习的语言,无论是在Web开发还是其他领域都有着广泛的应用前景。...

    Ruby Best Practices

    通过深入学习并实践《Ruby最佳实践》中的建议,你将能够编写出更高效、更具可维护性的Ruby代码,成为更出色的Ruby开发者。不断探索和适应Ruby语言的哲学,你将能够充分挖掘其潜力,创造出令人惊叹的应用程序。

    andreufontb_github_io-源码.rar

    8. **编码规范**:通过代码风格,我们可以看出 andreufontb 遵循的编码规范和最佳实践。 9. **问题解决**:源码中的注释可能记录了 andreufontb 解决问题的过程和思路,为其他开发者提供了参考。 10. **学习资源**...

    Ruby-CocoaCache缓存部分CocoaPods规范以实现更快的CI构建

    标题中的“Ruby-CocoaCache缓存部分CocoaPods规范以实现更快的CI构建”指出,这个项目是关于使用Ruby语言开发的一个工具,名为CocoaCache,它的主要目的是优化CocoaPods的持续集成(CI)流程,通过缓存部分CocoaPods...

    zukaite.github.io

    3. **构建流程**:使用Ruby on Rails开发的GitHub Pages项目,可能包括以下步骤:编写Ruby代码,使用Sass或SCSS处理CSS,用CoffeeScript或ES6编写JavaScript,然后通过Jekyll或其他静态站点生成器将动态内容转换为...

    HanWang0509.github.io

    【标题】"HanWang0509.github.io" 是一个个人或组织在GitHub上...通过深入研究这个项目,学习者可以了解到完整的Web开发流程,从编写Ruby代码到构建前端界面,再到部署上线,同时还能掌握版本控制和协作的最佳实践。

    (ruby 1.9 开发)Rango

    - **无硬性规定,只有建议**:Rango 不强制执行任何特定的编码规范或架构,而是提供一系列推荐的最佳实践。 #### 启动过程 - **环境设置**:使用 `init.rb` 脚本来设置运行环境。 - **作为脚本运行**:可以像普通...

    senendler_github_io-源码.rar

    【标题】"senendler_github_io-源码.rar" 提供的是一个名为 "senendler_github_io" 的个人网站源代码。这个压缩包很可能包含了该网站的所有前端和后端资源,包括HTML、CSS、JavaScript文件,以及可能的图片、数据库...

    chhan95.github.io

    3. **GitHub Pages**:"chhan95.github.io"这种命名方式符合GitHub Pages的规范。GitHub Pages允许用户免费托管静态网页,通常用于个人简历、博客或者项目展示。在这个案例中,"master"分支可能包含了用户网站的源...

    SOA系列:开源框架Ruby on Rails

    1. **易于维护**:Rails 的代码结构清晰,遵循一致的编码规范,这使得维护和扩展变得相对容易。 2. **灵活性**:Rails 具有高度的灵活性,能够适应不断变化的业务需求。 3. **安全性**:Rails 内置了许多安全...

    zrmacc.github.io:网站

    7. **GitHub仓库命名规范**: 在GitHub上,如果仓库名为`username.github.io`,那么该仓库将会自动作为GitHub Pages网站发布,访问地址通常是`https://username.github.io`。 8. **.github.io域名**: 这是GitHub ...

    petii.github.io

    考虑到标签是“Ruby”,我们可以推断这个GitHub页面可能与Ruby编程语言相关。 Ruby是一种面向对象的脚本语言,由日本人松本行弘于1995年设计并开发。它以其简洁、优雅的语法和强大的元编程能力而闻名,常用于Web...

Global site tag (gtag.js) - Google Analytics