是否有在 Vagrantfiles 中引用变量的样式指南?
Posted
技术标签:
【中文标题】是否有在 Vagrantfiles 中引用变量的样式指南?【英文标题】:Is There A Style Guide For Quoting Variables In Vagrantfiles? 【发布时间】:2017-10-25 08:20:47 【问题描述】:当我查看 Vagrant 文档 https://www.vagrantup.com/docs/networking/forwarded_ports.html 时,它给出了一个这样的例子:
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "tcp"
config.vm.network "forwarded_port", guest: 2003, host: 12003, protocol: "udp"
end
但是,以下内容似乎也有效:
单引号
Vagrant.configure("2") do |config|
config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "tcp"
config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "udp"
end
冒号前缀
Vagrant.configure("2") do |config|
config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "tcp"
config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "udp"
end
这些语法有什么区别?是否只有当您有变量like in puppet 时才应该使用双引号?
什么是冒号前缀语法?这是令人困惑的,因为该行中的其余关键字都有冒号后缀。
是否有 Vagranfiles 的样式指南?
【问题讨论】:
【参考方案1】:免责声明:以下是自以为是(只是我对此的看法)。但所有的风格指南也是如此。不要陷入对这背后的推理的深入思考,只需做出选择并努力保持一致即可。
是否有样式指南 Vagrantfiles?
很快:Use this style guide
长答案:似乎没有任何官方的 Vagrant 风格指南,但由于它是 Ruby 编程语言,我们可以查看官方的 Ruby 风格指南……哦,等等,实际上 Ruby 也没有!这个可能是最受欢迎的,所以坚持下去:
rubocop-hq/ruby-style-guide
我应该使用什么:单引号 ('word'
)、双引号 ("word"
) 或符号 (:word
)?
简短地说:使用双引号。
长答案:风格指南在单引号和双引号问题上是矛盾的:it offers you choice A and B,所以坚持使用 Vagrant 文档:
默认使用双引号:
node.vm.provision "shell", inline: "echo hello from node #i"
如果双引号是字符串的一部分,请使用单引号。这个snippet from Vagrant documentation与style guide一致:
config.winssh.export_command_template = '$env:%ENV_KEY%="%ENV_VALUE%"'
什么是冒号前缀语法?
简而言之:冒号标记symbol
(see Ruby documentation)。
这个答案再扩展一点:What is the colon operator in Ruby?
什么时候应该在 Vagrantfile 中使用symbols
?
很快:(几乎)从不。
长答案:坚持使用双引号以保持一致性,除非您在 Vagrant 解析您的 Vagrantfile 时遇到可变性或性能问题。更多关于 Ruby 中符号和字符串的性能和可变性:The Difference Between Ruby Symbols and Strings。
【讨论】:
【参考方案2】:Vagrantfile 是一个 ruby 脚本,因此它遵守 ruby 规则。
使用双引号的主要优点之一是当您需要string interpolation
【讨论】:
所以除非我们需要字符串插值,否则应该使用单引号。什么是冒号前缀?以上是关于是否有在 Vagrantfiles 中引用变量的样式指南?的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 中是不是有在类中使用的关键字来获取其类型?
是否有在 JavaScript 项目中存储生成文件的标准? [关闭]