在字符串文字中使用制表符是“不好的做法”吗?

作为后续内容是否必须在C和C ++中转义制表符? (注意我不是上述问题的作者)。

我已经知道这样的代码被认为是“不好的做法”。 这些评论似乎暗示了同样的事情。 但是,由于某些原因,该标准允许这种欺骗,所以有人必须要么没有发现它的伤害或有一个用例。

是不是逃避制表字符被广泛接受为“不良做法”?

在litterals中使用制表符而不是转义它们( '\t' ,“\ t”)是一种不好的做法,因为:

  • 读者不会立即意识到有一个标签。 后果:关于代码的错误假设,错误的更改(例如,当需要调整代码输出的allignemnt时)
  • 选项卡扩展可能因编辑器而异。 后果:阻碍团队合作和维护,因为不同的人可能会看到不同的布局。
  • 最重要的是:一些编辑器在保存源文件时(使用配置的选项卡扩展设置)将选项卡转换为空格,以消除此类嵌入式选项卡。 后果:未被注意/不期望的变化(f.ex:当团队成员使用这样的编辑器并进行次要编辑时,甚至不在此字符串中)。

我从来没有真正想过它,但我无法想象找到文字制表空间字符是一个好主意,因为你无法立即将它们与标准空白区分开来。 如果出于某些特定原因需要在字符串文字中使用制表空间,则更清楚明确地编写\t以便每个人都准确地知道您打算做什么。

顺便说一句,只有因为标准允许它才必须有一个好的用例…这个概念有点破碎。 例如,标准允许我们声明原始指针,并编写new指针。