我应该在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),然后重构它,使它可以重用,这可能会涉及到像上面这样的构造。