Hacker News new | ask | show | jobs
by CRConrad 1739 days ago
> You just moved the problem to a different layer.

No, I think you're misunderstanding. Weird... Aha: My fault, sorry.

> In your case you would end up calling your function like this: DoToppings(true, false, true, true);

What?!? Heck no, that wasn't what I meant, why would you think that? [Goes repeatedly clicking "parent"] Aha, I see: Sorry, the threads and sub-threads have branched so I got confused as to where we are.

No, that wasn't what I meant at all. I got this sub-thread mixed up with sibling ones, and was talking in the context of languages with native enums and sets (roughly, Pascal and its descendants), where you do:

  type PizzaFilling: (tuna, shrimp, peperoni, ham, gorgonzola, jalapeno) ; // Etc, etc...
       PizzaFillings: set of PizzaFilling ;
  function MakePizza(PizzaFillings);
And then the body of function MakePizza uses that set as per my GP comment.

It's called not with a bunch of anonymous booleans like you wrote, but with a set of enumerated descriptively-named fillings as a parameter; say, a TakeOrder function builds this set by starting from an empty one (or perhaps tomato and cheese already in as defaults?) by the customer's specifications, and then calls

  MakePizza(OrderedFillings);
> Sure, there is no black and white, and depends on the language,

Yeah, I was attempting to show how the problem you mentioned doesn't exist in languages with better / saner types. Again, sorry for getting the contexts mixed up; I though that was what you were talking about too, and just didn't get.

> the builder pattern is a good tool to have in the toolbox.

Urgh, yeah, I suppose so... At least in languages where you need it, because they lack other more basic (Heh!) amenities.

1 comments

Duh, I meant

   function MakePizza(Fillings: PizzaFillings);
of course.