Coding style 硬报价与软报价。什么时候使用哪一个?

Coding style 硬报价与软报价。什么时候使用哪一个?,coding-style,quotes,Coding Style,Quotes,这个问题困扰了我一段时间。我看到很多人在代码中使用软引号。一、 但是,几乎所有地方都要使用硬引号。我认为硬引号在某些情况下可能更好(比如在PHP中,将变量放入带有赞誉的字符串中)。但是现在硬引号和软引号有什么区别呢?在什么情况下哪个更好?不同语言的引号有什么不同吗?它会影响速度吗?请提供一个完整和详细的答案,如果可能的话,与来源,因为这可能是一个很好的帮助开始程序员太多。谢谢 这个话题不能用语言不可知的方式来讨论,因为许多语言对这两种引号赋予不同的语义 在某些语言中,这两种引用方式的含义完全不同

这个问题困扰了我一段时间。我看到很多人在代码中使用软引号。一、 但是,几乎所有地方都要使用硬引号。我认为硬引号在某些情况下可能更好(比如在PHP中,将变量放入带有赞誉的字符串中)。但是现在硬引号和软引号有什么区别呢?在什么情况下哪个更好?不同语言的引号有什么不同吗?它会影响速度吗?请提供一个完整和详细的答案,如果可能的话,与来源,因为这可能是一个很好的帮助开始程序员太多。谢谢

这个话题不能用语言不可知的方式来讨论,因为许多语言对这两种引号赋予不同的语义

在某些语言中,这两种引用方式的含义完全不同:在C语言家族中,字符串用双引号括起来,而字符用单引号括起来;在Postgres中,字符串用单引号括起来,而双引号转义标识符。在这些语言中,您没有任何选择,必须使用正确的引号

在其他语言中,这两种语言之间没有语义差异:Python不区分这两种样式。在这种情况下,选择一种风格并坚持下去可能是值得的,但你更喜欢哪一种并不重要;选择约定而不是随机使用这两种样式的原因是,它将在将来避免不匹配的引号。选择能够避免反斜杠的引号样式可能还有(非常轻微的)性能优势,因为它们的处理比字符串中的非特殊字符(非常轻微)更昂贵

在另一个语言家族中,单引号中的字符串不被解析为变量插值,而变量引用被替换为双引号字符串。甚至在这些语言中也有更多不同的风格:例如,
bash
不在单引号字符串中执行任何解析,这意味着您甚至不能在那里反斜杠引用文字单引号(
'foo'bar'
是一个错误;您需要
'foo'\'bar'
才能包含文字单引号)

在对单引号字符串不执行任何类型转义的语言中,这些将是性能最好的字符串文字类型。在开始引号之后,解析器只寻找结束引号(可以很好地优化),而不关心字符串的实际内容

在检查字符串内容的语言中,性能将与语法复杂性成比例变化。至少必须扫描字符串以查找是否出现任何特殊字符,如果有,则需要对其进行处理(例如,反斜杠可能只跳过下一个字符,但如果语法允许类似于
\0x##
的序列,则解析器可能还需要检查其后面的几个字符)


如果语言允许在字符串中插入变量,则其性能取决于具体的实现。解析
“foo$var bar”
字符串中的变量引用可能是一个复杂的过程,但另一方面
“foo.”$var.“bar”
涉及两个字符串串联,串联也是一个昂贵的过程-每个串联需要分配一个新字符串并将两个操作数复制到其中;对于长字符串,这可能会非常昂贵。一种特定语言的实现可能会更好地优化以解析和替换插入字符串中的变量,而另一种实现可能会更好地优化多个字符串的串联(例如,通过使用类似内部的结构)。不过,这两种构图风格的表现不太可能有很大的不同。

我假设软引号指的是
而硬引号指的是
?谷歌让我相信这不是常见的术语。@AlexLynch你是对的,软引号是
,硬引号是
@lord\u t我自己也经常使用PHP,但这可能与许多其他语言有关。在大多数语言中,双引号用于定义字符串,而单引号用于定义字符(嗯,1个字符)@Bgi我只能想到遵循该惯例的C族语言。这几乎不是“大多数”语言。