[英]Passing command line arguments to classes
在開發由多個類組成的大規模命令行應用程序時,這些應用程序需要使用從命令行傳遞的選項,如何構造代碼以便可以使用這些選項?
我寫這樣的代碼:
class DatabaseHandler
def initialize(cmd_options = {})
@cmd_options = cmd_options
end
def some_method
puts @cmd_options[:cmd_parameter]
end
end
對我來說,這似乎很乏味且不必要。 在項目的類中使用命令行選項參數的Ruby最佳實踐是什么? 幫助表示贊賞。
Ruby類就是:類。 即使是命令行應用程序,也應使用良好的OOD。 如果需要自定義行為,請使用依賴項注入或使用參數對其進行配置。 您可以使用全局變量來共享命令行選項,但與往常一樣,這是有代價的:陰影,增加理解類協作者的復雜性,難以找到數據源等。
我建議使用工廠方法來解析輸入,並返回正確的配置以傳遞給類。 如果您想獲得依賴注入的好例子,請觀看Sandi Metz的演講 ,她真的很了解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.