Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Keep tabs as tabs or tabs as spaces

Keep tabs as tabs or tabs as spaces

Scheduled Pinned Locked Moved The Lounge
question
48 Posts 35 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Rob Philpott

    You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

    Regards, Rob Philpott.

    P Offline
    P Offline
    P0110X
    wrote on last edited by
    #28

    I prefer tabs and I use to tab the document, so the source code control tool "ignores" the spacing pain

    _class MySignature _{ __public override void toString() __{ ____return "hi ;)"; __} _}

    1 Reply Last reply
    0
    • R Rob Philpott

      You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

      Regards, Rob Philpott.

      S Offline
      S Offline
      Stefan_Lang
      wrote on last edited by
      #29

      Rob Philpott wrote:

      Or worse yet - "does it matter?"

      If you want a hard answer, the answer is that most probably it does matter. Or, more to the point: if you know for sure that every tool you use to view, edit or in other way work with your source code files uses the same tab width, and every other developer working on the same files, and any other person who for some reason works with your files, only will use tools with that same tab width, then you're safe to use and store only tabs. Unfortunately, in 99% of all cases the above conditions are not met, and so you're 'safer' to store tabs as spaces instead. Having to backspace for formatting purposes - repeatedly or not - is something you shouldn't need to do at all - either you have specific functions to increase and decrease text indention, or your editor is smart enough to interpret a backspace at the start of a the text in a line as a command to decrease the indention (I've worked with such an editor once, but unfortunately can't remember it's name). Here are some examples on how stuff can get messed up by storing tabs instead of spaces: 1. Code comments appear unaligned because of different tab settings 2. Various developers see different indentions on different lines, because the tools they use insert formatting in different ways, including, possibly, spaces for indentions 3. Viewing changes becomes confusing because tabs and spaces might be considered different by the diff tool, even though the code itself is unchanged. Also alignment issues may arise from different tab settings for the viewer 4. Edit functions that cut/copy vertically blocks of text (only rectangular areas rather than whole lines) might not work properly when using tabs (ok, not many editors support that, and there is a very limited use for that functionality, but still...) Fortunately, most tools like editors and viewers can be set to use a distinct tab width, so if you feel more comfortable storing tabs, then just make sure that everyone does this and configures all their tools to use the right tab width. Then you're good to go. :) Unfortunately there's always someone who stores tabs as spaces ... ;P Personally, I do always store spaces, because this is the only way to make sure that everyone will see the indentations exactly as I made them. :cool:

      G 1 Reply Last reply
      0
      • T tom1443

        I'm in the minority but I agree with Pete - spaces always.

        R Offline
        R Offline
        Roland van der Plas
        wrote on last edited by
        #30

        I also agree. Referring to rule #9 of Elements of C# Style: Do not use "hard" tabs. I guess it's a rule for other languages as well..

        1 Reply Last reply
        0
        • S Stefan_Lang

          Rob Philpott wrote:

          Or worse yet - "does it matter?"

          If you want a hard answer, the answer is that most probably it does matter. Or, more to the point: if you know for sure that every tool you use to view, edit or in other way work with your source code files uses the same tab width, and every other developer working on the same files, and any other person who for some reason works with your files, only will use tools with that same tab width, then you're safe to use and store only tabs. Unfortunately, in 99% of all cases the above conditions are not met, and so you're 'safer' to store tabs as spaces instead. Having to backspace for formatting purposes - repeatedly or not - is something you shouldn't need to do at all - either you have specific functions to increase and decrease text indention, or your editor is smart enough to interpret a backspace at the start of a the text in a line as a command to decrease the indention (I've worked with such an editor once, but unfortunately can't remember it's name). Here are some examples on how stuff can get messed up by storing tabs instead of spaces: 1. Code comments appear unaligned because of different tab settings 2. Various developers see different indentions on different lines, because the tools they use insert formatting in different ways, including, possibly, spaces for indentions 3. Viewing changes becomes confusing because tabs and spaces might be considered different by the diff tool, even though the code itself is unchanged. Also alignment issues may arise from different tab settings for the viewer 4. Edit functions that cut/copy vertically blocks of text (only rectangular areas rather than whole lines) might not work properly when using tabs (ok, not many editors support that, and there is a very limited use for that functionality, but still...) Fortunately, most tools like editors and viewers can be set to use a distinct tab width, so if you feel more comfortable storing tabs, then just make sure that everyone does this and configures all their tools to use the right tab width. Then you're good to go. :) Unfortunately there's always someone who stores tabs as spaces ... ;P Personally, I do always store spaces, because this is the only way to make sure that everyone will see the indentations exactly as I made them. :cool:

          G Offline
          G Offline
          GenJerDan
          wrote on last edited by
          #31

          Yep, tabs are all well and good*, but too varied in size. I often open up a source in Notepad to check something and tabs send the text waaay out there to the right at times. *Any R. Stevie Moore fans here? :-D

          S 1 Reply Last reply
          0
          • G GenJerDan

            Yep, tabs are all well and good*, but too varied in size. I often open up a source in Notepad to check something and tabs send the text waaay out there to the right at times. *Any R. Stevie Moore fans here? :-D

            S Offline
            S Offline
            Stefan_Lang
            wrote on last edited by
            #32

            This is exactly what I have been thinking of. Just didn't bother to mention it, because it reminds me of at least three occasions I've seen a tool like Notepad++ being suggested as a 'must-have' replacement for this hopelessly outdated piece of nostalgic-ware. ;)

            1 Reply Last reply
            0
            • G Gary Wheeler

              No, because Visual Studio (at least as recently as VS2008), still does not handle tabs correctly, especially when block indenting a selection.

              Software Zen: delete this;

              J Offline
              J Offline
              jsc42
              wrote on last edited by
              #33

              Visual Studio? Use Notepad (for Windows), vi (for Unix / Linux), ISPF or TSO EDIT (for MVS), or EDIT or EDLIN or COPY CON: for MS-DOS. I always used to use 3 spaces with punched card and paper tape. I now use Tabs at the start of lines, after the command keyword and before '='; and single space everywhere else. It maximises visual layout whilst minimising storage / network bandwidth.

              G 1 Reply Last reply
              0
              • J jsc42

                Visual Studio? Use Notepad (for Windows), vi (for Unix / Linux), ISPF or TSO EDIT (for MVS), or EDIT or EDLIN or COPY CON: for MS-DOS. I always used to use 3 spaces with punched card and paper tape. I now use Tabs at the start of lines, after the command keyword and before '='; and single space everywhere else. It maximises visual layout whilst minimising storage / network bandwidth.

                G Offline
                G Offline
                Gary Wheeler
                wrote on last edited by
                #34

                :^)

                Software Zen: delete this;

                1 Reply Last reply
                0
                • R Rob Philpott

                  You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                  Regards, Rob Philpott.

                  P Offline
                  P Offline
                  patbob
                  wrote on last edited by
                  #35

                  Tabs or spaces doesn't matter, as long as A) everybody agrees how many spaces a tab is equivanat to, and B) preferably everybody uses spaces or everybody uses tabs, not a mixture of some using one and others using another. Some external tools have assumptions built in too. The only violation to this should always be old code. Whatever it was done as, do any new changes in the same indentation style, even if it isn't your religion. Where I work, we do none of the above and our code's a total mess. Every developer has their religion and nobody's got the authority to dicipline the others, so nobody can decree a standard. Crtl-K crtl-F is my friend :)

                  patbob

                  1 Reply Last reply
                  0
                  • R Rob Philpott

                    You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                    Regards, Rob Philpott.

                    T Offline
                    T Offline
                    TripShock
                    wrote on last edited by
                    #36

                    I always use tabs with a tab width of 4. What I would be interested in knowing is, why is there even an option to use spaces instead of the tab character? Doesn't tab deserve the right to exist by itself? Who introduced this idea of converting all your tabs into spaces and why?

                    F 1 Reply Last reply
                    0
                    • R Rob Philpott

                      You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                      Regards, Rob Philpott.

                      L Offline
                      L Offline
                      LintMan
                      wrote on last edited by
                      #37

                      Tabs are pure evil. Well, OK maybe not, but I hate them. Part of the problem is that different editors and tools treat the tab character differently. Some always use 4 chars, some use 8, some indent to specific column numbers, some use a user-selected number of spaces. If everything is tabbed and you use a single set of consistent tools, that's no problem. The problem is when spaces and tabs get mixed together and/or you need to work in a heterogenous environment things get ugly really quickly. The basic fact is that you can't trust tabbed text to look the same and be lined up the same from one computer setup to the next. And if you mix in someone using spaces, things go really screwey when someone else opens the file with a different tab behavior and suddenly the spaced line is out of whack through nobody's fault. (And please don't tell me that every code line MUST begin with a tab like it's a make file or something). None of that happens if everyone uses spaces. Then the text is formatted the same regardless of what editor/tool/platform/etc you use. This benefit far outweights the "symmetry" of a backspace removing 4 spaces at once. Particularly when most good code editors can unindent you automatically regardless of tabs.

                      1 Reply Last reply
                      0
                      • R Rob Philpott

                        You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                        Regards, Rob Philpott.

                        F Offline
                        F Offline
                        Fulvio Dominici
                        wrote on last edited by
                        #38

                        REAL tabs are the one and only thing to use, spaces must appear one at a time. And, with a tool you can change tabs in spaces, but not the other way around. :cool:

                        1 Reply Last reply
                        0
                        • R Rob Philpott

                          You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                          Regards, Rob Philpott.

                          F Offline
                          F Offline
                          Frank Peelo
                          wrote on last edited by
                          #39

                          Spaces always. Tabs are 8 chars, or 4 chars, or 3 chars, or something else depending on the phase of the moon. They are *meant* to be configurable, and your indentation is probably not. Just because some printers in the 1980s had fixed tab width doesn't mean you can rely on it. And if you are working with a variety of people and/or tools, sooner or later you'll get your code back with the wrong tab size and give yourself pain. Use spaces and then everyone knows where you're indented.

                          1 Reply Last reply
                          0
                          • T TripShock

                            I always use tabs with a tab width of 4. What I would be interested in knowing is, why is there even an option to use spaces instead of the tab character? Doesn't tab deserve the right to exist by itself? Who introduced this idea of converting all your tabs into spaces and why?

                            F Offline
                            F Offline
                            Frank Peelo
                            wrote on last edited by
                            #40

                            Because tabs predate high-level programming languages. On a typewriter, you can set the tabs to get text to line up, BUT the big thing about them is that a tab could be one level on one page, another level when you go to type in a different column of names, or whatever. And when you go to type the next document, you could set different tab sizes. Go to a different typewriter - you are certainly not continuing the same document, so you will have different tab settings again. Look at tabs in a word processor - that's the sort of thing they are for. In a programming language, you want your levels of code to be indented by a certain amount, which you do not want to change half way down the file, or when you go to a different PC. And tabs are just the wrong tool for that. Spaces (in a monospaced font, and that's the only type to use when programming) have the same width as any other character. Always. And that's what you want when indenting. The tab key should indent by the amount you want, and the backspace (or typing a } ) should outdent you by the same amount. But that's interpreted by the editor, not by whatever is converting your source code into a displayable format -- which might be an editor, or it might be someone else's editor, or maybe a printer if you're being retro. So the editor should do what the keys you press tell it to do, and record the result unambiguously in your source code file. And "unambiguously" means with spaces. Recording a tab character in the source code means that what you type will be reinterpreted by the editor that is loading it, and the way it is reinterpreted may not be what you intended.

                            1 Reply Last reply
                            0
                            • R Rob Philpott

                              You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                              Regards, Rob Philpott.

                              R Offline
                              R Offline
                              RobEpworth
                              wrote on last edited by
                              #41

                              It matters big time... Anyone using Source Control needs to consider the implications, in particular when working on multi-developer projects. Source Control (most of them) only store the delta (changes) of the code. Now this setting is a personal preference, so each IDE can set not only how many spaces = 1 tab, but also if it should convert one to the other. (how it handles quoted strings is another story) As devs checkout code, don't like the formatting, change it, and check it back in. You end up with source deltas that contain nothing but tab to space and space to tab conversions - and possibly 1 or 2 real code changes. (and it all has to be stored somewhere) This becomes more problematical when it comes to merging code branches. Tab/Space conversions often upset the offsets used in deltas which results in a merge requiring manual intervention to correct conflicts. I don't care which one you use individually, but if you're working on a group project EVERYONE needs to be using the same settings.

                              1 Reply Last reply
                              0
                              • J Joan M

                                Let's be grateful for the first programmer that made an app to convert tabs to spaces and vice-versa... :rolleyes: I prefer tabs. :thumbsup:

                                [www.tamelectromecanica.com] Robots, CNC and PLC machines for grinding and polishing.

                                G Offline
                                G Offline
                                Gary Huck
                                wrote on last edited by
                                #42

                                Indeed. Obviously, a personal preference. 'tis what global search/replace is for. Me, I prefer 2 spaces but who cares? 'pretty easy to replace all tabs with such, then the next s/he can do the same.

                                W 1 Reply Last reply
                                0
                                • E Ennis Ray Lynch Jr

                                  It is the efficient vs. the lazy in this argument. Most people are too lazy to change the flow. VS defaults to spaces so why change it. Watch the people who are in favor of coding with spaces actually code. Watch how slow they (usually) work. I am a tab man. All of my code is used only on Windows. I don't have to deal with using Unix and Windows for the same code base and I can type. Yes it matters. There is nothing worse than having to break away from the keyboard to use the mouse.

                                  Need custom software developed? I do custom programming based primarily on MS tools with an emphasis on C# development and consulting. I also do Android Programming as I find it a refreshing break from the MS. "And they, since they Were not the one dead, turned to their affairs" -- Robert Frost

                                  G Offline
                                  G Offline
                                  Gary Huck
                                  wrote on last edited by
                                  #43

                                  Really?! We [space-people] work slow because we may hit the space bar twice sometimes? (the IDE usually does the "work" by the way). Careful with your assessment - we're not lazy!

                                  1 Reply Last reply
                                  0
                                  • R Rob Philpott

                                    You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                                    Regards, Rob Philpott.

                                    G Offline
                                    G Offline
                                    ghle
                                    wrote on last edited by
                                    #44

                                    If you use spaces instead of tabs, you NEVER have a problem. Deleting spaces? WHY? That would only be necessary if you screwed up your code in the first place. Write cleaner code first time around. :) I'm modifying code in 25-year-old DB language. The original coder didn't use tabs or spaces. Now that sucks! (no comments, either)

                                    Gary

                                    1 Reply Last reply
                                    0
                                    • G Gary Wheeler

                                      No, because Visual Studio (at least as recently as VS2008), still does not handle tabs correctly, especially when block indenting a selection.

                                      Software Zen: delete this;

                                      G Offline
                                      G Offline
                                      ghle
                                      wrote on last edited by
                                      #45

                                      Upped your 2-vote. I guess someone doesn't like you identifying things that don't work in their favorite IDE. :thumbsup:

                                      Gary

                                      1 Reply Last reply
                                      0
                                      • E Ennis Ray Lynch Jr

                                        It is the efficient vs. the lazy in this argument. Most people are too lazy to change the flow. VS defaults to spaces so why change it. Watch the people who are in favor of coding with spaces actually code. Watch how slow they (usually) work. I am a tab man. All of my code is used only on Windows. I don't have to deal with using Unix and Windows for the same code base and I can type. Yes it matters. There is nothing worse than having to break away from the keyboard to use the mouse.

                                        Need custom software developed? I do custom programming based primarily on MS tools with an emphasis on C# development and consulting. I also do Android Programming as I find it a refreshing break from the MS. "And they, since they Were not the one dead, turned to their affairs" -- Robert Frost

                                        Y Offline
                                        Y Offline
                                        YSLGuru
                                        wrote on last edited by
                                        #46

                                        @Ennis Sorry to bust your bubble but I use SPACES and I can wipe the floor (in terms of speed) of any of my co-workers who prefer using tabs. There are PROS & CONS to using TABS or SPACES and we could all argue whcih is better all day. What is important is that you are consistent in which you use within a project and that you note in your code that you use HARD TABS only or all spaces. That way anyone who has to revise your code knows what to expect. I routinely have to cleanup poorly constructed T-SQL (the SQL Server flavor of SQL) done by procedural programmers with no real RDBMS/SQL training/knowledge and the use of tabs in their code is a nightmare. I use UEStudio, the big brother of UltraEdit, to swap out all tabs with spaces in a single command; a big time saver. So in the end its really a matter of prefernece and specifc scenario and programmer as to whcih is really better no matter how hard one argues for all SPACES or all TABS.

                                        1 Reply Last reply
                                        0
                                        • R Rob Philpott

                                          You know what I mean - you can have it so that a tab is a tab, and backspace removes it - or you can have it as usually 4 spaces so one tab takes four backspace hits to remove it. I like the first way and despise the second (it offends my need for symmetry), but seem to be alone in this in my current place of work. Or worse yet - "does it matter?" Please reassure me I'm in the right really....

                                          Regards, Rob Philpott.

                                          Y Offline
                                          Y Offline
                                          YSLGuru
                                          wrote on last edited by
                                          #47

                                          FYI - For those making teh case against using spaces because of the time it takes to backspace over tabs verses SPACES, your argument is weak at best. There are cases (scenario/project specific) for using TABS instead of SPACES however the argment of "takes too long to back space over" is not even close to one. If you use just your keyboard and have a hands off the mouse approach you can quickly and easily highlight multiple spaces with a few keyboard clicks depending on the app your using. If you can't do this then either the ditor you are using is carp and you need to switch or your working on code created by one of the TAB Nazi's and there's not much you can do but bare through it and fix their junk. A TAB NAZI is someone who over -uses tabs to the point of being an extremeist. Tabs and or multiple SPACES for indentation are meant for aligning code and make the code more legiable. Some developers let tabs get out of controal and indent their code WAYYYYYYYYY to far. If you are indenting your code with tabs by more then 4 spaces on the max end then you are over killing it. Anyone who can;t see indented code using 4 spaces needs to get their eyes checked. I have glasses and can easily see indentation with just 2 spaces (or 1 TAB set to 2 spaces). Don't be a TAB Nazi!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups