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.
next prev parent 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