对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...
开发者可以通过自定义 `config.gen` 文件,根据项目需求调整生成的代码结构,使代码更符合项目规范和设计模式。在 Ruby 开发环境中,这样的工具无疑提升了开发体验,降低了出错的可能性,值得在实际工作中探索和使用...
综上所述,Ruby的多态性是其魅力的一部分,它提供了灵活性和代码复用,而Ruby编码规范则帮助开发者编写出更易读、易维护的代码。了解并掌握这些知识点,对于深入理解Ruby编程以及提升编程技能至关重要。
基于Airbnb的Ruby代码风格指南,本资源提供了一套详尽的编程规范及示例,旨在帮助Ruby开发者提升代码质量,确保项目的可读性和可维护性。无论是个人开发者还是团队协作,遵循这些经过实战验证的指南都将使得代码更加...
这种不兼容性源于对Ruby语言及其核心库的深入修改,目的是提升语言性能和规范。Ruby 1.9.0的推出并非完全稳定,Matz,即Ruby的创始人,曾在ruby-core邮件组中提及,此版本包含了所有预期的不兼容性修改,但并未提供...
1. **代码规范**:通过强制执行社区风格指南,整个项目保持一致的代码风格,使得代码更易于阅读和理解。 2. **错误预防**:在编码阶段就能发现潜在的问题,而不是等到运行时或测试阶段。 3. **自动化重构**:许多...
3. Rubinius:Rubinius是一个用Ruby语言大部分实现的虚拟机,其目标是提供一个高性能的、符合Ruby语言规范的平台。它使用LLVM作为后端,支持即时编译,旨在提供比MRI更好的性能。 4. MagLev:MagLev是GemStone/S...
- 最佳实践与代码规范 10. **Ruby生态系统** - 常用的Ruby库与框架 - Gem管理工具的使用 - 社区资源与开发工具推荐 #### 四、特色与亮点 - **实战导向**:本书通过丰富的实例演示Ruby的各项功能,帮助读者在...
本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深程序员,同样也适合那些想要挑战对这门语言的理解并更深入掌握它的Ruby程序员。本书首先通过一个快速指南带您熟悉这门语言,然后彻底解释它的细节,包括: ...
Ruby-TensorStream项目通常包含一些示例代码,帮助初学者理解和应用框架。这些示例可能涵盖简单的线性模型、卷积神经网络(CNN)以及循环神经网络(RNN)。同时,活跃的社区支持是项目发展的重要驱动力,用户可以在...
3. **文档检查**:Cane可以检查Ruby代码中的YARD文档注释是否完整。YARD是一种流行的Ruby文档生成工具,Cane确保每个公开的方法都有相应的文档,以便其他开发者能轻松理解代码功能。 4. **代码覆盖率**:虽然Cane...
它的核心特性在于提供了一种简洁而强大的方式来解析Ruby代码中的注释,将这些注释转化为结构化的文档,使得代码的可读性和可维护性大大提升。 Yard的工作原理是通过解析Ruby源码,识别出特定格式的文档注释(例如`#...
这在团队协作中尤其重要,因为它可以帮助确保代码遵循一致的编码规范和最佳实践。 Flay的使用并不复杂,可以在命令行中直接运行,如下所示: ``` flay your_project_directory ``` 或者,如果需要指定特定的代码...
Ruby强调代码的可读性和可维护性,这使得它成为许多开发者的首选语言,尤其在Web开发领域,如Ruby on Rails框架的广泛应用。 "ruby-2.0"是Ruby语言的一个主要版本,发布于2013年。这个版本带来了许多性能改进和新...
10. **最佳实践**:遵循Nginx和Ruby社区的最佳实践,如使用模块化代码、遵循编码规范、合理分配资源等,以提高代码质量和可维护性。 通过以上知识点,开发者可以充分利用ngx_ruby模块来构建高效、灵活的Web应用程序...
4. **vm**:虚拟机的实现,例如YARV,负责解释和执行Ruby代码。 5. **parse.y**:Ruby的语法描述文件,用于Yacc生成解析器。 6. **lexer.l**:词法分析器的描述文件,用于flex生成词法分析器。 通过分析这些源代码...
相比于直接在Ruby代码中构建JSON或其他格式的字符串,RABL通过模板使代码更清晰,更易于维护。它允许开发者定义哪些数据应该被包含,以及如何组织和嵌套这些数据。 **JSON支持** JSON(JavaScript Object Notation...