Re: [vote] Opinions about conditional built-in names?
Daniel Dekany <[email protected]> Fri, 5 Jun 2015 08:31:40 +0200
| Newsgroups | gmane.comp.web.freemarker.devel |
|---|---|
| Message-ID | <[email protected]> |
For now I have renamed exp?choose(whenTrue, whenFalse) to exp?then(whenTrue, whenFalse) because this time that was the most popular option (last year it was ?choose for some reason). I still wonder if we should sacrifice some terseness for being more understandable with: exp?then_else(whenTrue, whenFalse). If you hate to type "_", take into account that in 2.3.23 you can already write templates in camel case, which will be probably the recommended convention sooner or later. Then you have: exp?thenElse(whenTrue, whenFalse) Opinions? -- Thanks, Daniel Dekany Wednesday, June 3, 2015, 12:58:56 AM, Daniel Dekany wrote: > Wednesday, June 3, 2015, 12:00:09 AM, Jaime Garza wrote: > >> thenElse is not in the style of other composite words for >> built-ins, like cap_first, right? The style dictates ?then_else > > Yes, I meant then_else. (Or... in fact, in 2.3.23 you can use camel > case as well, but then you need to use camel case for everything > that's defined by Freemarker.) > >> Personally I like boolean?if(true-expr, false-expr) > > So my concern with ?if is this that loggedIn?if(user.name, "unknown") > can be easily misread like this, as you read it left-to-right: (We > are) logged in IF user.name is "unknown". At last the "logged in IF > user.name" part is especially easy to read into it, and is already the > opposite of what the expression means (IF logged in then user.name). > >> Very concise. >> >> Jaime Garza >> >> -----Original Message----- >> From: Daniel Dekany [mailto:[email protected]] >> Sent: Tuesday, June 02, 2015 2:20 PM >> To: FreeMarker-devel >> Subject: Re: [Freemarker-devel] [vote] Opinions about conditional built-in names? >> >> Tuesday, June 2, 2015, 1:54:24 PM, Raymond Auge wrote: >> >>> Having reviewed those and due to my preferring readability over >>> anything else, I would still lean toward: >>> >>> someBoolean?then(whenTrue, whenFalse) >>> >>> But would actually prefer the more expressive: >>> >>> someBoolean?ifelse(whenTrue, whenFalse) >> >> Then rather someBoolean?thenElse(whenTrue, whenFalse), isn't it? >> Though that even longer... >> >> What should I notice in that Wikipedia article? >> >> -- >> Thanks, >> Daniel Dekany >> >> >>> I'd learn to deal with the first of course. >>> >>> - Ray >>> >>> On Tue, Jun 2, 2015 at 7:47 AM, Raymond Auge <[email protected]> wrote: >>> I lean to "then". >>> >>> But before deciding maybe a quick look over these: http://en.wikipedia.org/wiki/%3F: >>> >>> - Ray >>> >>> On Tue, Jun 2, 2015 at 3:01 AM, Daniel Dekany <[email protected]> wrote: >>> OK, so that's like a vote for "then". Anyone else has an opinion? Or >>> even just a vote on the name you prefer? >>> >>> someBoolean?then(whenTrue, whenFalse)someBoolean?then(whenTrue, whenFalse) >>> or >>> someBoolean?choose(whenTrue, whenFalse) >>> or >>> something else? >>> >>> -- >>> Thanks, >>> Daniel Dekany >>> >>> >>> Monday, June 1, 2015, 9:41:49 PM, Woonsan Ko wrote: >>> >>>> On 6/1/15 3:26 PM, Daniel Dekany wrote: >>>>> Sunday, May 31, 2015, 7:50:20 PM, Woonsan Ko wrote: >>>>> >>>>>> I personally prefer having the default value option inside the >>>>>> parenthesis, without having to depend on the default value after '!'. >>>>>> So, I like the idea the odd number of parameters for a default value. >>>>>> >>>>>> Regarding the original question about 'switch' and 'choose', I like the >>>>>> 'switch' very much, but I'm not sure if 'choose' is a good name for >>>>>> ternary operator. In XSL, 'choose' means just one choice of the >>>>>> 'switch'. >>>>> >>>>> Actually, in XSLT "choose" stands for "switch" (and "when" stands for >>>>> "case"). But that just proves how confusing this word is... >>>> >>>> Oh you're right. Long time passed after I wrote XSL files last. >>>> >>>>> >>>>>> 'choose' sounds like related to one of the 'multiple' choices >>>>>> to me. >>>>> >>>>> Well, I'm also unhappy with "choose", I just couldn't find better >>>>> yet... What do you think about "then". Apart from the lack of "else" >>>>> in it, it reads quite fluently: loggedIn?then(user.name, "unknown"). >>>> >>>> Yeah, "then" sounds better to me than anything else. >>>> >>>>> >>>>>> Another option to consider might be 'iif' [1], which seems a bit clearer >>>>>> to me than 'either' and others. >>>>>> >>>>>> someBoolean?iif(whenTrue, whenFalse) >>>>>> >>>>>> Just my two cents, >>>>> >>>>> I have played that idea back then, but I'm afraid very few knows what >>>>> does "iif" stands for. Also loggedIn?iif(user.name, "unknown") can be >>>>> easily misread like: we are logged in IF user.name is "unknown". >>>> >>>> Agreed. Not sound fluent. >>>> >>>> Kind regards, >>>> >>>> Woonsan >>>> >>>>> >>>>>> Woonsan >>>>>> >>>>>> [1] http://en.wikipedia.org/wiki/IIf >>>>>> >>>>>> On 5/30/15 6:02 AM, Daniel Dekany wrote: >>>>>>> And regarding the semantics of ?switch... as it sands now, if there's >>>>>>> no matching choice, that will be an exception that says: >>>>>>> >>>>>>> The value before ?switch(case1, value1, case2, value2, ...) didn't >>>>>>> match any of the case parameters, and there was no default value >>>>>>> parameter (an additional last parameter) either. >>>>>>> >>>>>>> So, if you have an odd number of parameters, then the last one is like >>>>>>> the default branch of switch in Java. >>>>>>> >>>>>>> I have also considered just returning null if there's no match, and >>>>>>> then one can write ?switch(...)!theDefault, but then if someone >>>>>>> doesn't give a default, the error messages will just say that >>>>>>> ?switch(...) has evaluated to null/missing, which many users won't >>>>>>> understand why's happening. Also it has the same problems as >>>>>>> ?then(this)!that had. ------------------------------------------------------------------------------