`
xxh123
  • 浏览: 33742 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Ruby 代码规范

 
阅读更多

对ruby和python这样的动态语言的开发者来说,从来没有官方的编码规范和最佳实践,下面介绍一种。
这个代码的规范推荐ruby开发者把它作为最佳实践,这样一个开发者写的代码就可以被真实世界中的其他开发者维护。

格式
几乎每一个人都相信除了自己的代码别人的风格都是丑陋的,代码都是不可读的。不过事实真的是这样?最好还是有一个规范。
1 source的文件编码使用utf-8。


2 使用2个空格的缩进,不要使用tabs,tabs在不同的操作系统上有不同的空格数(并且可以被人为的设置)。这可能导致在有些人的编辑器在代码看起来不同。


3 在操作符前后使用空格,包括逗号,冒号,分号,{的前后和}的前面,空格也许(大部分)和Ruby的解释器无关,但它的正确使用是写易读的代码的关键。

 

   sum = 1 + 2
  a, b = 1, 2
  1 > 2 ? true : false; puts 'Hi'
  [1, 2, 3].each { |e| puts e }

 

唯一的例外是使用指数操作符

# bad
e = M * c ** 2

# good
e = M * c**2

 


4 没有空格在(, [的后面和], )的前面。

some(arg).other
[1, 2, 3].length

 


5 when和case的步长一样深
这个有很多的人不认同,不过这种风格在"The Ruby Programming Language"和"Programming Ruby"都得到了确认。

case
when song.name == 'Misty'
  puts 'Not again!'
when song.duration > 120
  puts 'Too long!'
when Time.now.hour > 21
  puts "It's too late"
else
  song.play
end

kind = case year
       when 1850..1889 then 'Blues'
       when 1890..1909 then 'Ragtime'
       when 1910..1929 then 'New Orleans Jazz'
       when 1930..1939 then 'Swing'
       when 1940..1950 then 'Bebop'
       else 'Jazz'
       end
 



6 在一个方法的返回值前面使用空行(除非只有一行),并且在def之间使用空行。

def some_method
  do_something
  do_something_else

  result
end

def some_method
  result
end
 


7 使用api文档和它的约定。不要在注释块和def之间使用空行。

8 使用空行把一个方法分为逻辑段。

9 保持每行少于80个字符
Emacs的用户也许相应设置这样的配置在他们的config中 (e.g. ~/.emacs.d/init.el):

(setq whitespace-line-count 80
      whitespace-style '(lines))
{code}
Vim的用户也许相应设置这样的配置在他们的config中(e.g. ~/.vimrc):
{code}
" VIM 7.3+ has support for highlighting a specified column.
if exists('+colorcolumn')
    set colorcolumn=80
else
    " Emulate
    au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%80v.\+', -1)
endif
 



10 避免结尾空格
Emacs的用户也许相应设置这样的配置在他们的config中 (和前面的例子完美的结合起来):

(setq whitespace-style '(trailing space-before-tab
                         indentation space-after-tab))
{code}
Vim Emacs的用户也许相应设置这样的配置在他们的 ~/.vimrc:
{code}
autocmd BufWritePre * :%s/\s\+$//e

 

语法
1 def使用括号当有参数的时候,忽略括号当没有参数

def some_method
   # body omitted
 end

 def some_method_with_arguments(arg1, arg2)
   # body omitted
 end
 

2 不要使用for,除非你知道为什么。大部分的时候使用迭代器代替。for在each中被实现了(所以你是间接使用),不过for没有引入到一个新的范围中(不像each),而且在块中定义的变量外部仍然可见。

arr = [1, 2, 3]

# bad
for elem in arr do
  puts elem
end

# good
arr.each { |elem| puts elem }

 

3 在if/unless多行的时候不要使用then

# bad
if some_condition then
  # body omitted
end

# good
if some_condition
  # body omitted
end
 


4 比起if/then/else/end 结构更加喜爱使用三元运算符,它的更为普遍和明显更简洁。

# bad
result = if some_condition then something else something_else end

# good
result = some_condition ? something : something_else
 


5

分享到:
评论

相关推荐

    Ruby语言规范

    ### Ruby语言规范详解 #### 前言 本文档旨在为使用Ruby编程的语言规范提供指导。...以上规范总结了Ruby编程时的一些基本规则和最佳实践,遵循这些规范可以帮助开发者编写出更高质量、更易于维护的代码。

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    通过遵循这些规范,我们可以写出更清晰、更易于理解的Ruby代码,从而提高代码质量。 总结,理解并熟练运用Ruby中的类变量、全局变量、实例变量以及多态概念,对于编写高效、可维护的代码至关重要。同时,遵循Ruby...

    Ruby-Autogeneratecode一款命令行数据模型代码生成器

    开发者可以通过自定义 `config.gen` 文件,根据项目需求调整生成的代码结构,使代码更符合项目规范和设计模式。在 Ruby 开发环境中,这样的工具无疑提升了开发体验,降低了出错的可能性,值得在实际工作中探索和使用...

    10.5 多态、为什么ruby、ruby编码规范.rar

    综上所述,Ruby的多态性是其魅力的一部分,它提供了灵活性和代码复用,而Ruby编码规范则帮助开发者编写出更易读、易维护的代码。了解并掌握这些知识点,对于深入理解Ruby编程以及提升编程技能至关重要。

    Airbnb Ruby代码风格指南:实战版

    基于Airbnb的Ruby代码风格指南,本资源提供了一套详尽的编程规范及示例,旨在帮助Ruby开发者提升代码质量,确保项目的可读性和可维护性。无论是个人开发者还是团队协作,遵循这些经过实战验证的指南都将使得代码更加...

    为何Ruby 1.9的不兼容性会导致原有Ruby代码无法工作

    这种不兼容性源于对Ruby语言及其核心库的深入修改,目的是提升语言性能和规范。Ruby 1.9.0的推出并非完全稳定,Matz,即Ruby的创始人,曾在ruby-core邮件组中提及,此版本包含了所有预期的不兼容性修改,但并未提供...

    Ruby-RuboCop是Ruby静态代码分析器基于社区Ruby风格指南

    1. **代码规范**:通过强制执行社区风格指南,整个项目保持一致的代码风格,使得代码更易于阅读和理解。 2. **错误预防**:在编码阶段就能发现潜在的问题,而不是等到运行时或测试阶段。 3. **自动化重构**:许多...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    3. Rubinius:Rubinius是一个用Ruby语言大部分实现的虚拟机,其目标是提供一个高性能的、符合Ruby语言规范的平台。它使用LLVM作为后端,支持即时编译,旨在提供比MRI更好的性能。 4. MagLev:MagLev是GemStone/S...

    Ruby 教程 The Book of Ruby

    - 最佳实践与代码规范 10. **Ruby生态系统** - 常用的Ruby库与框架 - Gem管理工具的使用 - 社区资源与开发工具推荐 #### 四、特色与亮点 - **实战导向**:本书通过丰富的实例演示Ruby的各项功能,帮助读者在...

    Ruby程序设计语言 (涵盖Ruby 1.8和1.9)源代码

    本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深程序员,同样也适合那些想要挑战对这门语言的理解并更深入掌握它的Ruby程序员。本书首先通过一个快速指南带您熟悉这门语言,然后彻底解释它的细节,包括: ...

    Ruby-TensorStream用Ruby重新实现TensorFlow

    Ruby-TensorStream项目通常包含一些示例代码,帮助初学者理解和应用框架。这些示例可能涵盖简单的线性模型、卷积神经网络(CNN)以及循环神经网络(RNN)。同时,活跃的社区支持是项目发展的重要驱动力,用户可以在...

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

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

    Ruby-Yard是一款Ruby文档工具

    它的核心特性在于提供了一种简洁而强大的方式来解析Ruby代码中的注释,将这些注释转化为结构化的文档,使得代码的可读性和可维护性大大提升。 Yard的工作原理是通过解析Ruby源码,识别出特定格式的文档注释(例如`#...

    Ruby-Flay分析代码结构的相似之处

    这在团队协作中尤其重要,因为它可以帮助确保代码遵循一致的编码规范和最佳实践。 Flay的使用并不复杂,可以在命令行中直接运行,如下所示: ``` flay your_project_directory ``` 或者,如果需要指定特定的代码...

    ruby语言帮助文当

    Ruby强调代码的可读性和可维护性,这使得它成为许多开发者的首选语言,尤其在Web开发领域,如Ruby on Rails框架的广泛应用。 "ruby-2.0"是Ruby语言的一个主要版本,发布于2013年。这个版本带来了许多性能改进和新...

    Ruby-ngxruby是嵌入ruby脚本的Nginx模块

    10. **最佳实践**:遵循Nginx和Ruby社区的最佳实践,如使用模块化代码、遵循编码规范、合理分配资源等,以提高代码质量和可维护性。 通过以上知识点,开发者可以充分利用ngx_ruby模块来构建高效、灵活的Web应用程序...

    脚本引擎内核源代码之:Ruby-1.8.6.tar.gz

    4. **vm**:虚拟机的实现,例如YARV,负责解释和执行Ruby代码。 5. **parse.y**:Ruby的语法描述文件,用于Yacc生成解析器。 6. **lexer.l**:词法分析器的描述文件,用于flex生成词法分析器。 通过分析这些源代码...

    Ruby-rabl普通的ruby模板包含jsonbsonxmlplist和msgpack支持

    相比于直接在Ruby代码中构建JSON或其他格式的字符串,RABL通过模板使代码更清晰,更易于维护。它允许开发者定义哪些数据应该被包含,以及如何组织和嵌套这些数据。 **JSON支持** JSON(JavaScript Object Notation...

Global site tag (gtag.js) - Google Analytics