Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. /* Problem: Inefficient and confusing */
  2. int foo(int bar)
  3. {
  4.         int return_value = 0;
  5.         int doing_okay = 1;
  6.         doing_okay = do_something( bar );
  7.         if (doing_okay)
  8.         {
  9.                 doing_okay = init_stuff();
  10.         }
  11.         if (doing_okay)
  12.         {
  13.                 doing_okay = prepare_stuff();
  14.         }
  15.         if (doing_okay)
  16.         {
  17.                 return_value = do_the_thing( bar );
  18.         }
  19.         return return_value;
  20. }
  21.  
  22. /* Problem: Getting murdered by PHB's for using goto */
  23. int foo(int bar)
  24. {
  25.         if (!do_something( bar )) {
  26.                 goto error;
  27.         }
  28.         if (!init_stuff( bar )) {
  29.                 goto error;
  30.         }
  31.         if (!prepare_stuff( bar )) {
  32.                 goto error;
  33.         }
  34.         return do_the_thing( bar );
  35. error:
  36.         return 0;
  37. }
  38.  
  39. /* Problem: Too many nested blocks, horrible */
  40. int foo(int bar)
  41. {
  42.         int return_value = 0;
  43.         if (do_something( bar )) {
  44.                 if (init_stuff( bar )) {
  45.                         if (prepare_stuff( bar )) {
  46.                                 return_value = do_the_thing( bar );
  47.                          }
  48.                 }
  49.         }
  50.         return return_value;
  51. }
  52.  
  53. /* Still confusing? */
  54. int foo(int bar)
  55. {
  56.     return (do_something(bar) && init_stuff(bar) && prepare_stuff(bar)) ? do_the_thing(bar) : 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement