Browse DevX
Sign up for e-mail newsletters from DevX

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



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.



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