我应该在ruby脚本中定义一个主要方法吗?

在python中,一个模块不一定要有主函数,但通常使用下面的习惯用法:

def my_main_function(): ... # some code if __name__=="__main__": # program's entry point my_main_function() 

我知道Ruby也不一定main方法,但是我应该遵循一些最佳实践吗? 我应该命名我的方法main或什么?

关于主要方法的维基百科页面并没有真正帮助我。


作为一个侧面说明,我也看到了python中的以下习惯用法:

 def my_main_function(args=[]): ... # some code if __name__=="__main__": # program's entry point import sys sys.exit(my_main_function(sys.argv)) 

我通常使用

 if __FILE__ == $0 x = SweetClass.new(ARGV) x.run # or go, or whatever end 

所以是的,你可以。 这只取决于你在做什么。

我总是发现$PROGRAM_NAME比使用$0更可读。 有一半的时候,我看到类似Perl的全局variables,我必须去查看它们。

 if __FILE__ == $PROGRAM_NAME # Put "main" code here end 

您应该将库代码放在lib /和需要库代码的可执行文件中,放在bin /中。 这与RubyGems的封装方法兼容。

一个常见的模式是lib / application.rb(或者最好是一个更适合你的域的名字)和bin / application,它包含:

 require 'application' Application.run(ARGV) 

我个人的经验法则是:现在

 if __FILE__ == $0 <some code> end 

比5行更长,我把它提取到main函数。 Python和Ruby代码都适用。 没有这个代码看起来结构不好。

没有。

为什么添加一个额外的复杂层没有真正的好处? Rubyists没有使用它的约定。

我会等到第二次需要使用它(这可能会比你想象的要less),然后重构它,使它可以重用,这可能会涉及到像上面这样的构造。

Interesting Posts