在python中,模块没有具有main函数,但通常的做法是使用以下习语:
def my_main_function():
... # some code
if __name__=="__main__": # program's entry point
my_main_function()
我知道Ruby也没有 拥有main
方法,但是我应该遵循某种最佳实践吗?我应该将我的方法main
命名为什么?
Wikipedia page about main methods并没有真正帮助我。
作为旁注,我在python中也看到了以下习语:
def my_main_function(args=[]):
... # some code
if __name__=="__main__": # program's entry point
import sys
sys.exit(my_main_function(sys.argv))
答案 0 :(得分:76)
我通常使用
if __FILE__ == $0
x = SweetClass.new(ARGV)
x.run # or go, or whatever
end
是的,你可以。这取决于你在做什么。
答案 1 :(得分:49)
我总是发现$PROGRAM_NAME
比使用$0
更具可读性。有一半时间,我看到像这样的“Perl-like”全局变量,我必须去查找它们。
if __FILE__ == $PROGRAM_NAME
# Put "main" code here
end
答案 2 :(得分:9)
您应该将库代码放在bin /中需要库代码的lib /和可执行文件中。这具有与RubyGems的打包方法兼容的额外优势。
一个常见的模式是lib / application.rb(或者最好是一个更适合你域名的名称)和bin / application,它包含:
require 'application'
Application.run(ARGV)
答案 3 :(得分:3)
我个人的经验法则是:当下
if __FILE__ == $0
<some code>
end
超过5行,我将其提取到main
函数。这适用于Python和Ruby代码。没有那个代码,看起来结构不合理。
答案 4 :(得分:-1)
没有
为什么要添加额外的复杂层才能获得真正的好处?使用它的Rubyist没有惯例。
我会等到第二次你需要使用它(这可能比你想象的更少发生)然后重构它以便它可以重复使用,这可能涉及如上所述的构造。