• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby编程中的命名风格指南

Ruby编程中的命名风格指南

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了ruby on rails指南,ruby编程,ruby元编程,ruby编程语言,ruby元编程 第2版 pdf等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

用英语命名标识符。

  

 # bad - identifier using non-ascii characters
  заплата = 1_000

  # bad - identifier is a Bulgarian word, written with Latin letters (instead of Cyrillic)
  zaplata = 1_000

  # good
  salary = 1_000

</div>

    使用snake_case的形式给变量和方法命名。

   

 # bad
  :'some symbol'
  :SomeSymbol
  :someSymbol

  someVar = 5

  def someMethod
   ...
  end

  def SomeMethod
   ...
  end

  # good
  :some_symbol

  def some_method
   ...
  end

</div>

    Snake case: punctuation is removed and spaces are replaced by single underscores. Normally the letters share the same case (either UPPER_CASE_EMBEDDED_UNDERSCORE or lower_case_embedded_underscore) but the case can be mixed

    使用CamelCase(駝峰式大小寫)的形式给类和模块命名。(保持使用缩略首字母大写的方式如HTTP,
    RFC, XML)

    

# bad
  class Someclass
   ...
  end

  class Some_Class
   ...
  end

  class SomeXml
   ...
  end

  # good
  class SomeClass
   ...
  end

  class SomeXML
   ...
  end

</div>

    使用 snake_case 来命名文件, 例如 hello_world.rb。

    以每个源文件中仅仅有单个 class/module 为目的。按照 class/module 来命名文件名,但是替换 CamelCase 为 snake_case。

    使用SCREAMING_SNAKE_CASE给常量命名。

 

  # bad
  SomeConst = 5

  # good
  SOME_CONST = 5

</div>

    在表示判断的方法名(方法返回真或者假)的末尾添加一个问号(如Array#empty?)。
    方法不返回一个布尔值,不应该以问号结尾。

    可能会造成潜在“危险”的方法名(如修改 self或者 参数的方法,exit! (不是像 exit 执行完成项)等)应该在末尾添加一个感叹号如果这里存在一个该 危险 方法的安全版本。

   

 # bad - there is not matching 'safe' method
  class Person
   def update!
   end
  end

  # good
  class Person
   def update
   end
  end

  # good
  class Person
   def update!
   end

   def update
   end
  end

</div>

    如果可能的话,根据危险方法(bang)来定义对应的安全方法(non-bang)。

  class Array
   def flatten_once!
    res = []

    each do |e|
     [*e].each { |f| res << f }
    end

    replace(res)
   end

   def flatten_once
    dup.flatten_once!
   end
  end

</div>

    当在短的块中使用 reduce 时,命名参数 |a, e| (accumulator, element)。

  #Combines all elements of enum枚举 by applying a binary operation, specified by a block or a symbol that names a method or operator.
  # Sum some numbers
  (5..10).reduce(:+)              #=> 45#reduce
  # Same using a block and inject
  (5..10).inject {|sum, n| sum + n }      #=> 45 #inject注入
  # Multiply some numbers
  (5..10).reduce(1, :*)             #=> 151200
  # Same using a block
  (5..10).inject(1) {|product, n| product * n } #=> 151200

</div>

    在定义二元操作符时,把参数命名为 other (<< 与 [] 是这条规则的例外,因为它们的语义不同)。

  def +(other)
   # body omitted
  end

</div>

    map 优先于 collect,find 优先于 detect,select 优先于 find_all,reduce 优先于inject,size 优先于 length。以上的规则并不绝定,如果使用后者能提高代码的可读性,那么尽管使用它们。有押韵的方法名(如 collect,detect,inject)继承于 SmallTalk 语言,它们在其它语言中并不是很通用。鼓励使用 select 而不是 find_all 是因为 select 与 reject 一同使用时很不错,并且它的名字具有很好的自解释性。

    不要使用 count 作为 size 的替代。对于 Enumerable 的 Array 以外的对象将会迭代整个集合来
    决定它的尺寸。

 

  # bad
  some_hash.count

  # good
  some_hash.size

</div>

    倾向使用 flat_map 而不是 map + flatten 的组合。
    这并不适用于深度大于 2 的数组,举个例子,如果 users.first.songs == ['a', ['b', 'c']] ,则使用 map + flatten 的组合,而不是使用 flat_map 。
    flat_map 将数组变平坦一个层级,而 flatten 会将整个数组变平坦。

  # bad
  all_songs = users.map(&:songs).flatten.uniq

  # good
  all_songs = users.flat_map(&:songs).uniq

</div>

    使用 reverse_each 代替 reverse.each。reverse_each 不会分配一个新数组并且这是好事。

  # bad
  array.reverse.each { ... }

  # good
  array.reverse_each { ... }

</div>


</div>

您可能想查找下面的文章:

  • win7安装ruby on rails开发环境
  • 简单对比分析Ruby on Rails 和 Laravel
  • Windows下Ruby on Rails开发环境安装配置图文教程
  • Ruby On Rails中如何避免N+1问题
  • Ruby On Rails上手笔记(安装使用全过程)
  • CentOS中配置Ruby on Rails环境
  • ruby on rails 代码技巧
  • 采用UTF-8解决Ruby on Rails程序的中问题
  • Ruby on Rails框架程序连接MongoDB的教程
  • Ruby on Rails实现最基本的用户注册和登录功能的教程

相关文章

  • Ruby多线程编程初步入门
  • ruby写扫描当前网页所有url的脚本
  • Ruby在cmd下中文显示乱码以及不支持OpenSSL的问题解决
  • 深入理解Ruby中的代码块block特性
  • ruby on rails 代码技巧
  • Ruby实现的合并排序算法
  • ruby开发的交互式程序例子
  • Ruby中实现统计文件行数、单词数和字符数
  • Ruby on Rails基础之新建项目
  • 在博客中屏蔽垃圾留言的简单方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby基础知识之基本流程控制
    • Ruby on Rails中的ActiveRecord编程指南
    • Ruby简明教程之方法(Method)介绍
    • ruby、javascript、php中的观察者模式实现代码
    • 实例讲解Ruby中的五种变量
    • 使用ruby部署工具mina快速部署nodejs应用教程
    • Ruby、PHP、Shell实现求50以内的素数
    • Ruby中的String对象学习笔记
    • Ruby中关于模块的一些基础知识
    • Ruby中的循环语句的用法教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有