The “Single Exit Point” Idiom &#151 Is It Still Relevant?

The “Single Exit Point” Idiom &#151 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.

See also  Does It Make Sense to Splurge on a Laptop?

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist