C++ style question/criticism, was Re: Mozy Contest Answers

Steve smorrey at gmail.com
Sat Nov 4 19:16:47 MST 2006


LOL thats how it did look originally, but what happened was some typos
sneaked in, so I split and spaced it to try and help me find my typos
easier.  I wrote this code in a non-highlighting text editor (aka
notepad).  So this style helped me to cleanly visualize my mistakes.
However the style you show is pretty much how my code would normally
look.

On 11/4/06, Levi Pearson <levi at cold.org> wrote:
> Let me preface this with a disclaimer; I don't mean to pick on you in
> particular, since the style you've used seems to be pretty common.
> See below for the actual content.
>
> On Nov 4, 2006, at 6:28 PM, Steve wrote:
> > Well due to a connectivity issue I only got to do the first question.
> > I did it in c++ and it basically looked like this (I've been working
> > with it a little to clean it up since then)
> >
> > #include <iostream>
> > #include <string>
> > using namespace std;
> >
> > int main ()
> > {
> >       string str;
> >       char charopen = '(';
> >       char charclose = ')';
> >
> >       while(getline(cin,str))
> >       {
> >
> >               if(str.empty())
> >               {
> >                       return 0;
> >               }
> >
> >               int counter;
> >               int c_open = 0;
> >               int c_close = 0;
> >               int depth = 0;
> >               counter = str.length();
> >
>
> Why, oh why, do you use so much darned extra space in this code?
> It's an incredibly inefficient use of both vertical and horizontal
> space.  What is the point of putting curly braces on lines all by
> themselves? There's not actually a lot of code, but I have to scroll
> down just to read the whole thing.  And this is in a darned simple
> function; how long would a complex one get?  Compare with this
> version, which fits the whole main function in an 80x25 terminal:
>
> #include <iostream>
> #include <string>
> using namespace std;
>
> int main() {
>    string str;
>    char charopen = '(', charclose = ')';
>
>    while (getline(cin,str)) {
>      if (str.empty()) { return 0; }
>
>      int counter, c_open, c_close, depth;
>      c_open = c_close = depth = 0;
>      counter = str.length();
>
>      for (int x = 0; x <= counter; x++) {
>        if (str[x] == charopen) {
>         c_open++;
>         depth++;
>         if (str[x+1] == charclose) { depth--; }
>        }
>        if (str[x] == charclose) { c_close++; }
>      }
>
>      if (c_close != c_open) { cout << 0 << endl; }
>      else { cout << depth+1 << endl; }
>    }
> }
>
> Is there some reason I'm missing to prefer the extremely long version
> over the shortened one?
>
> Again, I don't mean this as a personal attack, just an honest
> bafflement at a programming style I've seen used fairly frequently.
>
>                 --Levi
>
> /*
> PLUG: http://plug.org, #utah on irc.freenode.net
> Unsubscribe: http://plug.org/mailman/options/plug
> Don't fear the penguin.
> */
>



More information about the PLUG mailing list