这是不良做法"在字符串文字中使用制表符?

时间:2015-03-07 16:21:58

标签: c++ c coding-style string-literals

作为Is it mandatory to escape tabulator characters in C and C++?的后续行动(注意我不是所述问题的作者)。

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

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