Python style guidelines

Andy Salnikov a_salnikov at yahoo.com
Mon Mar 15 16:34:58 EST 2004


"MetalOne" <jcb at iteris.com> wrote in message
news:92c59a2c.0403131328.54210c30 at posting.google.com...
> Good points.
> With resource acquistion, I was mainly thinking along the lines of
>
> int file_compare(const char *filename1, const char *filename2)
> {
>     FILE *infile1 = fopen(filename1, "r");
>     FILE *infile2 = fopen(filename2, "r");
>     if (!infile1 || !infile2)
>     {
>         // error
>         if (infile2)
>             fclose(infile2);
>         if (infile1)
>             fclose(infile1);
>         return FAILURE;
>     }
>
>     // compare files
>     return SUCCESS
> }
>
> as opposed to
>
> int file_compare(const char *filename1, const char *filename2)
> {
>     int result = SUCCESS;
>     FILE *infile1 = fopen(filename1, "r");
>     if (infile1)
>     {
>         FILE *infile2 = fopen(filename2, "r");
>         if (infile2)
>         {
>             // compare files
>         }
>         else
>         {
>             result = FAILURE;
>         }
>     }
>     else
>     {
>         result = FAILURE;
>     }
>     if (infile2)
>         fclose(infile2);
>     if (infile1)
>         fclose(infile1);
>     return result;
> }


  Latter version has an error - scope of infile2 is the first if _only_.
Write it like
this (and this is my preferred style too :)

int file_compare(const char *filename1, const char *filename2)
{
    int result = FAILURE;
    FILE *infile1 = fopen(filename1, "r");
    if (infile1) {
        FILE *infile2 = fopen(filename2, "r");
        if (infile2) {
            // compare files
            result = SUCCESS ; // maybe
            fclose(infile2);
        }
        fclose(infile1);
    }
    return result;
}

// Andy.




More information about the Python-list mailing list