我应该拥有什么Ruby知识?

Sar*_*els 26 ruby

我刚刚发现了我应该拥有的c#知识?问题和想知道一样,但对于Ruby.我认为Ruby是我最喜欢的编程语言,除了学习基础知识之外,至少我从众多Ruby on Rails项目和一些Ruby脚本中学到了什么,我试图通过阅读像Gluttonous,O'这样的博客来学习. Reilly Ruby,Ola BiniPolishing Ruby.我也读过像The Ruby Way这样书.

但是,在接受有关我的Ruby技能的采访时,我还没有充分准备.我被问过一次是否知道关闭,最初我回答说我没有,但后来我问是否面试官意味着代码块,比如lambda和do...... end,他做了.我是如何进行3年Ruby编程并尝试学习语言而不学习闭包=代码块的?

所以,我的问题是Ruby程序员应该具备Ruby语言的知识吗?你有什么期望,作为Ruby职位的采访者,我知道吗?只列出一些主题,我会阅读它们.如果您认为有必要,列出Ruby on Rails,Rake,Rack等特定于Ruby的工具也很好.

mol*_*olf 60

这有点来自我的头脑; 我确定我错过了很多.除了这里提到的东西,理解编程和面向对象编程当然是必须的.

一些重要的语言功能:

  • 意识到在Ruby中,一切都是表达式,并且能够应用该原则,即使您认为它使您的代码不可读.
  • 提到了关闭 ; 我还希望Rubyists能够知道块和proc(和lambdas)之间的区别,并知道如何在它们之间进行转换.在我看来,关闭掌握对于能够写出漂亮的Ruby非常重要.
  • 运算符重载:知道,当你定义一个名为方法会发生什么[],[]=,==,+,<<,等物体上.
  • 精通Array,EnumerableHash的大多数实例方法(即使你不清楚心里的确切定义).Ruby代码会这么多详细的,如果你不喜欢使用的方法collect,inject,join,zip在适当情况下,等等.
  • 彻底了解符号是什么,何时应该使用/避免它们.
  • 理解元类是什么,知道类变量类实例变量之间的区别.
  • 了解对象属性如何在Ruby中工作,如何使用attr_accessor和朋友定义它们,以及如何自己定义它们.
  • 能够使用模块,作为混合命名空间工具.您还应该了解如何混合实例方法类方法(或者能够弄清楚如何实现它).
  • 了解raise/rescuethrow/catch之间的区别,并且能够正确使用它们.
  • 了解元编程工作,并且至少有所有让你做元编程方法的基本思想(主要是隐藏在类ModuleObject).
  • 能够使用Hash方法参数作为命名参数的替代(即使它只是因为它是一种常见的模式).
  • 知道并发在Ruby中是如何工作的,也不起作用.
  • 延续,即使它们很少使用.

一些重要的工具:

  • 了解并理解Ruby宝石
  • 耙子
  • RDoc.
  • YAML.

一些框架知识:

  • Rails的基础知识很有用.即使只是因为外界有时似乎并不知道Rails和Ruby之间的区别.
  • 知道还有其他Web框架而不是Rails:Merb,Sinatra,Camping,......

最后,请记住,以上是"只是知识",而不是技能.如果您不熟悉它,可能很容易掌握大部分内容.


Yeh*_*atz 15

你可以通过阅读Ruby的创建者,Yukihiro Matsumoto 的Ruby编程语言来填补你作为真正的程序员而不是学者的知识空白.它涵盖了许多模糊的细节,例如不同类型的lambda中的多个赋值的变幻莫测,并且相对较新,涵盖了Ruby 1.9中的新语义.

我的一位老板曾告诉我,他认识并信任的一位长期程序员曾向他求助,并问道:"我忘了......一个字节中有多少位?" 这个故事的寓意并不是说这个家伙是个白痴 - 有时可能会长期编写一些合格的代码并错过其他似乎应该是基本的东西.


Sar*_*Mei 9

到@molf的列表我会添加:

DSLs - 如何使用它们以及如何编写它们.深入研究rake和capistrano的内部结构对此非常有用.

Rack - 使用Ruby(尤其是Python)来创建Web应用程序的关键优势.了解它为何具有优势,如何运作以及如何使用它.

消息传递与函数调用 - Ruby相对于Java之类的另一个关键优势.它的使用method_missing及其如何使ActiveRecord和DSL成为可能.


Ben*_*hes 7

闭包是关键(了解他们的范围),特征类(或元类或任何你想称之为的东西),mixins(包括和扩展以及你可以用它们做的所有愚蠢的技巧),元编程是Ruby特有的东西来了去提醒.标准的OO和函数式编程技术也是公平的游戏.