Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: All
Feb 8, 2000

The "Single Exit Point" Idiom — Is It Still Relevant?

Many programming schools recommend that functions have only a single exit point. For example, the following function is considered bad programming practice because it contains three potential exit points:

 
  int comapre_strings(const string & s1, const string & s2)
  { 
    // lexicographical comparison; like strcmp()
    if (s1 == s2) return 0;
    if (s1 > s2) return 1;
    return -1;
  }

Although the "single exit" programming idiom has some merits in procedural languages, it's virtually useless in C++. To see why, look at the following function. Ostensibly, it complies with the single exit idiom:

 
int func()
{
  char * pbuff = new char [MAX_SIZE]; // #1
  std::string str ("hello"); // #2
  return 0; // only one exit?
}

In practice, func() has three exit points; one of which is an explicit return statement. The other two are implicit exit points: in the statement #1, if operator new fails, it will throw a std::bad_alloc exception. Throwing an exception is an exit point. Similarly, in statement #2, if string's constructor fails, it will also throw an exception. Thus, the single exit point design idiom is pretty irrelevant in non-trivial C++ code. Instead of blindly following obsolete principles, programmers should focus on robust, efficient and functional design.

Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date