Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C > Re: indentation
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 15 of 45 Topic 26110 of 26821
Post > Topic >>

Re: indentation

by Keith Thompson <kst-u@[EMAIL PROTECTED] > May 7, 2008 at 06:44 PM

"Bill Cunningham" <nospam@[EMAIL PROTECTED]
> writes:
>     I have had several complaints by some people who wish to help me and
I 
> wish to get the problem straight. I wrote this small utility myself and 
> added some indentation and I wonder if it is acceptable. It does make
source 
> easier to read.
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(int argc, char **argv) {
>  if (argc!=3) {
>   fprintf(stderr,"usage error\n");
>   return -1;
>   }
>  double x,y;
>  x=strtod(argv[1],NULL);
>  y=strtod(argv[2],NULL);
>  printf("%.2f\n",y/x);
>  return 0;
>  }
>
>     Is this a good example of a properly indended program?

Better, but not yet good.

A single space per indentation level is IMHO insufficient.
It's still very hard to see what's indented.  I like 4-column
indentation myself; I consider 2 to be the bare minimum.  (Some
advocate 8-column indentation, which certainly encourages Any
decent text editor should do most of the work for you automatically
(":se ai" or ":set autoindent" in vi, for example).

There are several common styles for indentation and brace placement.
Your program exhibits none of them.  That's not necessarily A Bad
Thing, but it's a bit jarring, and there's rarely any good reason
not to follow one of the existing styles.

Two of the most common styles are:

1. K&R style.  An opening brace '{' goes at the end of a line,
preceded by a space (except possibly for the opening brace of a
function definition, for historical reasons).  Enclosed lines are
indented by one level (e.g., by 4 columns).  The closing brace is
aligned directly under the beginning of the line containing the
opening brace (this is where you go astray).

2. Opening and closing braces appear on lines by themselves.
Enclosed lines are indented by one level.

Rarer, but still valid, styles are:

3. Like 2, but the braces are aligned with the enclosed lines.

4. Like 2, but the braces are half-indented (e.g., by 2 columns).
I think this is the GNU-recommended style.

Personally, I prefer #1, and I've listed the others in order of my own
preference.  Note that in all these styles, the closing brace is
aligned either with the opening brace or with the line on which the
opening brace appears.

At the bottom of this message, I've added a copy of your code in
each of the 4 styles (omitting the #include directives).

Some additional notes on your code:

Returning -1 from main() is non-****table.  Use 0, EXIT_SUCCESS,
or EXIT_FAILURE.

Mixing declarations and statements is a C99-specific feature;
not all compilers sup****t it.  It's not wrong, but it may limit
the ****tability of your code.

(I'm tempted to mention the lack of error checking in your strtod()
calls, but this is obviously a toy program so I won't.)

Re-formatted code follows.  Note that I've also inserted some
whitespace to make the code easier to read.  Rules of thumb: use
spaces around operators, and always use a space after a comma.
Compare:

    x=strtod(argv[1],NULL);

    x = strtod(argv[1], NULL);

ThinkabouthowdifficultreadingEnglishwouldbewithoutwhitespace.

1.
int main(int argc, char **argv) {
    if (argc != 3) {
        fprintf(stderr, "usage error\n");
        return -1;
    }
    double x, y;
    x = strtod(argv[1], NULL);
    y = strtod(argv[2], NULL);
    printf("%.2f\n", y / x);
    return 0;
}   

1a.
int main(int argc, char **argv)
{
    if (argc != 3) {
        fprintf(stderr, "usage error\n");
        return -1;
    }
    double x, y;
    x = strtod(argv[1], NULL);
    y = strtod(argv[2], NULL);
    printf("%.2f\n", y / x);
    return 0;
}   

2.
int main(int argc, char **argv) 
{
    if (argc != 3) 
    {
        fprintf(stderr, "usage error\n");
        return -1;
    }
    double x, y;
    x = strtod(argv[1], NULL);
    y = strtod(argv[2], NULL);
    printf("%.2f\n", y / x);
    return 0;
}   

3.
int main(int argc, char **argv) 
    {
    if (argc != 3) 
        {
        fprintf(stderr, "usage error\n");
        return -1;
        }
    double x, y;
    x = strtod(argv[1], NULL);
    y = strtod(argv[2], NULL);
    printf("%.2f\n", y / x);
    return 0;
    }

4.
int main(int argc, char **argv) 
  { 
    if (argc != 3) 
      { 
        fprintf(stderr, "usage error\n");
        return -1;
      } 
    double x, y;
    x = strtod(argv[1], NULL);
    y = strtod(argv[2], NULL);
    printf("%.2f\n", y / x);
    return 0;
  }

-- 
Keith Thompson (The_Other_Keith) <kst-u@[EMAIL PROTECTED]
>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
 




 45 Posts in Topic:
indentation
"Bill Cunningham&quo  2008-05-08 00:51:07 
Re: indentation
Joe Wright <joewwright  2008-05-07 21:33:52 
Re: indentation
"Bill Cunningham&quo  2008-05-08 01:49:00 
Re: indentation
Ian Collins <ian-news@  2008-05-08 14:25:16 
Re: indentation
"Bill Cunningham&quo  2008-05-08 02:47:38 
Re: indentation
Mark McIntyre <markmci  2008-05-08 08:59:10 
Re: indentation
"rio" <a@[EM  2008-05-08 12:42:53 
Re: indentation
"Bill Cunningham&quo  2008-05-08 20:41:15 
Re: indentation
Keith Thompson <kst-u@  2008-05-08 14:39:29 
Re: indentation
"rio" <a@[EM  2008-05-09 10:18:36 
Re: indentation
"cr88192" <c  2008-05-09 17:29:48 
Re: indentation
"rio" <a@[EM  2008-05-09 10:22:29 
Re: indentation
"rio" <a@[EM  2008-05-09 16:57:33 
Re: indentation
pereges <Broli00@[EMAI  2008-05-09 02:25:56 
Re: indentation
Keith Thompson <kst-u@  2008-05-07 18:44:49 
Re: indentation
santiago538 <santiago5  2008-05-07 22:27:13 
Re: indentation
Andrew Haley <andrew29  2008-05-08 10:52:58 
Re: indentation
CBFalconer <cbfalconer  2008-05-07 21:36:33 
Re: indentation
"Bill Cunningham&quo  2008-05-08 20:43:25 
Re: indentation
CBFalconer <cbfalconer  2008-05-08 19:08:01 
Re: indentation
"cr88192" <c  2008-05-08 17:12:08 
Re: indentation
Richard Heathfield <rj  2008-05-08 07:34:17 
Re: indentation
brix99luftballons <bri  2008-05-08 11:26:57 
Re: indentation
pete <pfiland@[EMAIL P  2008-05-08 05:34:45 
Re: indentation
Richard Heathfield <rj  2008-05-08 09:39:42 
Re: indentation
brix99luftballons <bri  2008-05-08 16:26:24 
Re: indentation
Richard Heathfield <rj  2008-05-08 14:36:30 
Re: indentation
David Thompson <dave.t  2008-05-19 03:59:51 
Re: indentation
"cr88192" <c  2008-05-08 20:33:26 
Re: indentation
Flash Gordon <spam@[EM  2008-05-08 14:15:33 
Re: indentation
Richard Heathfield <rj  2008-05-08 14:17:54 
Re: indentation
Bart <bc@[EMAIL PROTEC  2008-05-08 05:11:49 
Re: indentation
Nick Keighley <nick_ke  2008-05-08 01:05:28 
Re: indentation
pereges <Broli00@[EMAI  2008-05-08 01:56:23 
Re: indentation
pete <pfiland@[EMAIL P  2008-05-08 05:11:00 
Re: indentation
CBFalconer <cbfalconer  2008-05-08 17:37:54 
Re: indentation
Nick Keighley <nick_ke  2008-05-09 00:25:50 
Re: indentation
Eligiusz Narutowicz<el  2008-05-08 13:35:45 
Re: indentation
Eligiusz Narutowicz<el  2008-05-08 13:38:31 
Re: indentation
"cr88192" <c  2008-05-09 17:11:40 
Re: indentation
Eligiusz Narutowicz<el  2008-05-08 14:23:27 
Re: indentation
"cr88192" <c  2008-05-09 16:43:23 
Re: indentation
Ben Bacarisse <ben.use  2008-05-08 18:07:27 
Re: indentation
Richard Heathfield <rj  2008-05-08 19:52:11 
Re: indentation
Jean-Marc Bourguet <jm  2008-05-09 02:19:27 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Jul 9 1:19:47 CDT 2008.