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

源代码布局方面:
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、在%后优先使用()作为分隔符

(0)

相关推荐

  • GitHub Eclipse配置使用教程详解

    1.下载egit插件 打开Eclipse,git需要eclipse授权,通过网页是无法下载egit的安装包的.在菜单栏依次打开eclipse→help→install new software→add,Name栏中输入egit,location栏中输入 http://download.eclipse.org/egit/updates/ ,点击ok进行下载.下载完成后会提示重启eclipse:如果已经有了就不需要了. 2.在Eclipse中生public key, 并添加到GitHub Repos

  • Git客户端图文详解 如何安装配置GitHub操作流程攻略

    Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具; 保存点 : Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目额状态; 可以在该保存点将多人提交的源码合并, 也可以会退到某一个保存点上; Git离线操作性 :Git可以离线进行代码提交, 因此它称得上是完全的分布式处理, Git所有的操作不需要在线进行; 这意味着Git的速度要比SVN等工具快得多, 因为SVN等工具需要在线时才能操作, 如果网络环境不好, 提交代

  • 在GitHub Pages上使用Pelican搭建博客的教程

    Pelican 介绍 首先看看 Pelican 的一些主要特性: Python实现,开放源码 输出静态页面,方便托管 支持主题,采用Jajin2模板引擎 支持代码语法高亮 支持reStructuredText.Markdown.AsciiDoc格式 支持Disqus评论 支持Atom和RSS输出 这些特性都是大爱,完全满足我对博客系统的基本需求,再配合免费无限制的GitHub Pages,一切近乎完美了. 安装 Pelican 开始前请自行安装Python环境,支持2.7.X和3.3+,为方便,

  • github 常用命令总结大全

    github常用命令 最近开始研究github,mark下一些常用命令 git remote add upstream https://github.com/winterIce/testTitle.git(别人的repository)    // 新建分支用于存放别人的repository git clone https://github.com/winterIce/testTitle.git  克隆到本地 git fetch branch2//更新信息 git merge branch2/ma

  • ruby实现github第三方认证

    代码很简单,这里就不多废话了 #coding: utf-8 require 'sinatra' require 'omniauth' require 'omniauth-github' use Rack::Session::Cookie use OmniAuth::Builder do provider :github, 'b478ae6b31dd730b20d1','89f67d361fb348c959eaafea7e40f6db8b166366' end get '/' do <<-HTM

  • github配置使用指南

    1.建立项目,进入项目文件夹 2.初始化ssh key 参见官网指南.(本机生成一对key,public key传到官网sshkey下面) https://help.github.com/articles/generating-ssh-keys/ 3.初始化用户名,邮箱 $ git config --global user.name "defnngj"//给自己起个用户名 $ git config --global user.email "defnngj@gmail.com&

  • python使用心得之获得github代码库列表

    1.背景 项目需求,要求获得github的repo的api,以便可以提取repo的数据进行分析.研究了一天,终于解决了这个问题,虽然效率还是比较低下. 因为github的那个显示repo的api,列出了每个repo的详细信息,而且是json格式的.现在貌似还没有找到可以分析多个json格式数据的方法,所以用的是比较蠢得splite加re的方法.如果大家有更好的方法,不发留言讨论! 2.代码 import re import os def GetUrl(num): str = os.popen("

  • github pull最新代码实现方法

    github现在已经经常用了,但是经常遇到下面的问题 比如:从一个项目A中fork了一个分支B,并且在分支B有了改动.过了几天后,项目A中的代码应该会有很多人提交修改了,现在想将最新的代码pull到分支B.请问如何做呢?在github界面上没有看到响应的按钮 解决步骤:   假设你fork的项目原始地址是urlRep, 你自己的是urlYou $ git remote  add upstream urlRep # 你本地的origin应该跟自己的remote,并且当前本地branch是maste

  • 两分钟学会如何在github托管代码

    本篇博客针对不会Git的小童鞋,大神们可以绕过,错误之处谢谢指正: 关于GitHub的强大此处不在说明,知道GitHub也有一段时间了,但是一直苦于不会使用. 本篇文章介绍的是如何将工程代码托管到上面:如果你还没注册GitHub账号请到https://github.com/上注册 如果你已经注册GitHub账号,在你的电脑上安装了GitHub,而一直还没上传过代码 1.打开浏览器登陆你的GitHub账号,Creat a new repo 如图: 2.然后跳转下一个页面,填写repository

  • github版本库使用详细图文教程(命令行及图形界面版)

    Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法. > Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括 Rubinius和Merb在内的很多知名项目都使用了Git.Git同样可以被诸如Capistrano和

  • GitHub上一些实用的JavaScript的文件压缩解压缩库推荐

    项目里要用到archive和unarchive整个已存在的folder,在找解决方案的时候尝试了一些当前比较流行的library,主要有adm-zip, JSZip, archiver等. 一.Use adm-zip adm-zip支持archive和unarchive一个或多个文件或者整个文件夹的功能,使用非常的简单方便. var adm_zip = require('adm-zip'); //creating archives var zip = new adm_zip(); zip.add

随机推荐