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