On 07/07/2018 11:44 PM, kdevel wrote:
On Saturday, 7 July 2018 at 11:29:35 UTC, rikki cattermole wrote:
       static if (args.length == 0)
          return;

else {


       writeln (args [0]);
       return bar (args [1 .. $]);

}

That's not guard clause style [1][2].

[1] https://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html
[2] http://wiki.c2.com/?GuardClause

Neither was your original example.

"A method has conditional behavior that does not make clear what the normal path of execution is"

   void bar (T ...) (T args) if (T.length == 0)
   {
      return;

      writeln (args [0]);
      return bar (args [1 .. $]);
   }

   void bar (T ...) (T args) if (T.length > 0)
   {
      writeln (args [0]);
      return bar (args [1 .. $]);
   }

(you meant T I suspect, as args is a runtime thing, but T is compile time, just like static if).

Reply via email to