Search code examples
c++ccoding-stylestring-literals

Is it "bad practice" to use tab characters in string literals?


As a follow-up on Is it mandatory to escape tabulator characters in C and C++? (do note I'm not the author of said question).

I've learned such code is considered "bad practice". The comments seem to be suggesting the same thing. However, for some reason the standard allows this trickery so somebody must either found no harm in it or has a use-case for it.

Is not escaping tabulator characters widely accepted as "bad practice"?


Solution

  • Using tabs in litterals instead of escaping them ('\t',"\t") is a bad practice because :

    • the reader is not immediately aware that there is a tab. Consequence: wrong assumptions about code, wrong changes (for example when allignemnt of code output needs to be adapted)
    • the tab expansion might be different depending on your editor. Consequence: hindering of teamwork and maintenance, as different people may see different layouts.
    • MOST OF ALL: some editors convert tabs to spaces when saving your source file (using the configured tab expansion settings) getting rid of such embedded tabs. Consequence: unnoticed/undesired change (f.ex: when a teammember uses such an editor and make a minor edit, not even in this string).