comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada2012 : When to use expression functions rather than function bodies?
Date: Fri, 16 Dec 2011 19:03:46 -0600
Date: 2011-12-16T19:03:46-06:00	[thread overview]
Message-ID: <jcgppl$480$1@munin.nbi.dk> (raw)
In-Reply-To: 1s7pzkf4hmdl5.15o0cmwoy5alh$.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:1s7pzkf4hmdl5.15o0cmwoy5alh$.dlg@40tude.net...
> On Fri, 16 Dec 2011 04:25:09 -0800 (PST), Martin wrote:
>
>> Are there any good arguments for *not* replacing all simple, single
>> line functions that don't [directly] access package body state
>> information with expression functions?
>
> 1. Readability
> 2. Proper encapsulation (to have interface and implementation separated)
> 3. Re-use (the same function must be refactored)
> 4. Maintainability (because of 1..3)
> 5. Safety (proper bodies are defined on the context where they have no
> access to the caller's context, otherwise than through parameters)
> 6. Deployment (proper bodies can be put into a library, have versions etc)
> 7. It is not Ada

Umm, an expression function is just another (shorter) way to write a 
function body, so it hard to imagine that there is any difference. Using 
them to replace a function body *in place* is completely harmless.

I suppose you are talking about the use of expression functions directly in 
a specification (without an explicit body), which is a totally separate 
issue. There, I tend to agree with you in the sense that they ought to be 
used in moderation. The intent was to use them for things like accessors for 
private components where there is no real value to the separate body.

For those sorts of uses, the issues you talk about above don't arise. (How 
could you "refactor" Obj.Field??). Moreover, everything in the private part 
is part of the implementation anyway; you're still enforcing that separation 
so long as the expression functions are in the private part.

                           Randy.





  reply	other threads:[~2011-12-17  1:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-16 12:25 Ada2012 : When to use expression functions rather than function bodies? Martin
2011-12-16 13:24 ` Dmitry A. Kazakov
2011-12-17  1:03   ` Randy Brukardt [this message]
2011-12-16 18:03 ` Adam Beneschan
2011-12-16 20:36   ` Martin Dowie
2011-12-16 21:34     ` Adam Beneschan
2011-12-16 23:08       ` Adam Beneschan
2011-12-17 12:26   ` georg bauhaus
2011-12-16 22:01 ` Jeffrey Carter
2011-12-16 22:52   ` Adam Beneschan
2011-12-16 23:09     ` Adam Beneschan
2011-12-17  1:21     ` Randy Brukardt
2011-12-17 12:45       ` georg bauhaus
2011-12-17 13:11         ` Dmitry A. Kazakov
2011-12-19 23:34           ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox