我试图编写自己的DSL进行文件操作,只是为了学习.
我的目标是使其易于理解且易于编码.
以下是将字符串附加到database.yml的3种方法:
1. append("windows").to("database.yml")
2. append(string: "windows").to(file: "database.yml")
3. append_string("windows").to_file("database.yml")
4. append_string "windows", to_file: "database.yml"
5. append string: "windows", to_file: "database.yml"
Run Code Online (Sandbox Code Playgroud)
我在所有这些替代方案中有点迷失.
具有DSL经验的人能给我一些指导并解释每个人的利弊吗?
每个人的阅读都是一样的,但我想知道哪一个遵循DRY的最佳实践和良好的编码标准.
编辑:我认为如果我可以指定一些可选参数,那将会很好.
append(string: "windows").to(file: "database.yml", :force => true)
Run Code Online (Sandbox Code Playgroud)
所以考虑到这一点,我想我必须使用方法调用.因为如果我使用替代4-5然后当我指定:force => true时,我不知道它是否是字符串或文件.
小智 4
对我来说,任何选择似乎都不错。
如果您(或用户)总是写入“database.yml”但附加内容不同,那么以下可能会更好。
on "database.yml" {
append "windows"
append "ubuntsu"
append "Leopard"
remove_if "bsd" do |..|
....#if condition satisfied, "bsd" will be removed
end
..
}
Run Code Online (Sandbox Code Playgroud)
如果您(或用户)希望始终为不同的数据库文件附加“windows”,那么以下可能没问题。(也许是罕见的情况,,)
append "windows".to {
to "database.yml"
to "database2.yml"
to "database3.xml", :force=>true
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我认为更好的选择是自己使用它或询问你的用户,然后完善。