分享 zw963 的 Ruby 笔记之`Ruby 惯例`

zw963 · 2012年02月25日 · 最后由 zw963 回复于 2012年02月26日 · 2701 次阅读

引子


以下内容纯粹为本人以前学习 Ruby 时的笔记整理。限于个人理解能力,可以肯定一定有 大量的错误,与其说分享,不如说是写出来让大家检查。如果有什么不对,或不准确的 地方,也希望前辈们一定多多指正,不吝赐教。

我希望这里是一个具有良好氛围的中文社区 (我梦寐以求的那个 Ruby 中文社区) 所以我不 希望出现针对这个帖子的不和谐言语或对针对本人的任何不良言语.

总共分为五大部分:每一部分都有上百条,可能会有重复,有些就是直接抄书。都是我 个人的理解以及对某些文章片段的延伸,大家就将就着看了。

markdown 格式折腾了一下午,托万能 Emacs 的福,使用 markdown-mode 搞定了。现在才觉 出 edit-server 的好来,这是另一个 Emacs 插件,可以让我在 Emacs 下使用特定的模式直 接编辑 Chrome 浏览器打开的表单,不过也许用惯了 org-mode 的缘故,这个 markdown 依旧 觉得很不习惯。

顺便提个建议:我总觉得应该开个 lisp 版块。我想凡是接触过 lisp(或 elisp) 的人,应该 都会觉得这两门语言惊人的相似,混入,布尔真假等等,如果说 Ruby 字符串 (尤其是 1.9) 及其强大,完全继承自 Perl 的话,我倒是觉得骨子里的东西 (类,模块) 甚至面向对 象的方式 (Ruby 一切都是对象,lisp 一切都是列表) 都和 lisp 惊人的相似,即使表面上 看起来这是完全不同的两种语言,甚至是不同类型语言。

笔记分类


  • Ruby 新人可以看看我的基础理论部分,这也是当初我学习 Ruby 心路历程,虽然有些问题很初级,但是我就是这样一步一步走过来的。

  • 类相关部分全是都是关于 Ruby 的基石类的概念。这部分的概念极多.超级复杂,也很抽象,如果你真正理解了 Ruby 的对象模型,会有及其惊艳的感觉。这部分的东西,这部分的大部分内容都是双眼瞪着天花板冥思苦想,也偶尔查阅源码而写出的。深有感触,有什么不对的地方,欢迎高手指正。

  • 小提示部分也很杂乱,这是感觉自己脱离了基础部分之后,写的一些小技巧。

  • 常犯错误部分不用说了,直到现在自己仍旧屡犯不止的错误。

  • ruby 惯例是自己整理的一些`非必须'的小技巧,但是作为 Ruby 惯例,应该支持。

正文开始


  1. 按照惯例,永远不要重写equal?方法!!
  2. 大量的证据证明, 全局变量将使得代码变得很难维护. 所以除非万不得已, 尽量别用. 而作为@@类变量, 则倾向于尽量少的使用.
  3. 作为Ruby优雅性的体现,建议使用then. 而且简单的if语句,建议使用修饰符形式.
  4. unless和until一般使用修饰句形式, 习惯上和自然语义比较明确的真假判断语句一起使用. 例如:Ruby 中大量存在的常见问号方法。defined? nil? empty? 等. 示例:s = o.to_s unless o.nil? puts a.pop until a.empty?
  5. 无论是`双引号字符串'或`单引号字符串', 建议 总是使用两个反斜杠`\\'来表示`反斜杠自身'
  6. 总是给inject指定一个初始值!!,例如inject(0) {}
  7. 在ruby的方法当中,多个参数间使用逗号分隔. 也可以用空格分隔或者没有空格(只要能区分开, 但不推荐).
  8. 在Ruby当中,按照惯例,大多数常量名都是全部大写的.并且使用下划线来分隔单词.例如LIKE_THIS. 类和模块名也是常量,按照惯例,它们采用驼峰式(MixedCase).例如:LikeThis.
  9. 操作符两侧(例如=)添加两个空格是一个好的习惯! 这样可以避免产生和方法名的歧义.也好看啊!
  10. 永远不要在方法名和其后的左括号之间留空白!!!!

@suupic ,楼上什么意思?

zw963 zw963 的 Ruby 笔记之`基础理论` 提及了此话题。 11月13日 16:30
zw963 zw963 的 Ruby 笔记之`类相关` 提及了此话题。 04月03日 10:56
zw963 zw963 的 Ruby 笔记之`常犯错误` 提及了此话题。 04月03日 10:56
zw963 zw963 的 Ruby 笔记之`小提示` 提及了此话题。 04月03日 10:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号