comp.lang.ada
 help / color / mirror / Atom feed
From: "Yannick Duchêne (Hibou57)" <yannick_duchene@yahoo.fr>
Subject: Re: Convention for naming of packages
Date: Fri, 10 Feb 2012 16:07:19 +0100
Date: 2012-02-10T16:07:19+01:00	[thread overview]
Message-ID: <op.v9gxmhjnule2fv@douda-yannick> (raw)
In-Reply-To: jh1ef7$26qm$1@adenine.netfront.net

Le Thu, 09 Feb 2012 22:39:51 +0100, Jeffrey Carter  
<spam.jrcarter.not@spam.not.acm.org> a écrit:
> The plural is used a lot in the standard library (Ada.Strings,  
> Ada.Containers).
I had this in minde, though this was not common enough. After I read you  
yesterday, I changed my mind and feel at rest with the plural now.

> The present participle is sometimes useful (Widget_Handling,  
> Town_Marshalling).
Noted.

> I've also seen instances where _Management was meaningful and solved  
> this kind of conflict.
Idem.


Will go for plural so.


Now I am seeking for something even more difficult: conflict between  
function names and object names. This can be solved using prefixed  
notation, but I want to avoid it to not bloat source too much. A too long  
full name is not readable and can just make people think Ada is  
definitively over‑wordy (as J.P. Rosen explained in a paper, people tends  
to keep in mind bad points first about Ada).

To be honest, this conflict typically occurs when I want a local constant  
to hold the value returned by a function, to avoid invocation of this  
function multiple time. That's a common idiom, although I feel this may be  
based on wrong assumptions about compiler efficiency, while not the only  
one reason. I feel it's often good to substitute a single name to a whole  
expression.

A quick example.


    function Object (Param : Param_Type) return Object_Type;

    procedure Scan is
       Object : constant Object_Type := Object (Param);
       -- Or alternatively: “Object : constant Object_Type renames Object  
(Param);”
    begin
       for I in Index_Type loop
          ... Object ...
          -- Instead of ... Object (Param) ...
       end loop;
    end;

Object conflict with Object. I can use prefix and have

    Object : constant Object_Type := Repository_Package.Object (Param);

instead of

    Object : constant Object_Type := Object (Param);


But I would like to avoid the Repository_Package prefix for the previously  
given reasons. I remember I knew a language (cannot remember which one)  
which was fine with this, as this language considered Object to not  
already be defined when it was encountering Object (Param).

Thus

    Object : constant Object_Type := Object (Param);

was defining Object with an initial value and right after hiding the  
Object function.

The problem does not occurs with either record type (as members are all  
prefixed) and subprogram parameters, as these are assigned by the caller.  
The latter may be an idea, so this could be a solution:


    procedure Scan is
       procedure Scan (Object : in Object_Type) is
       begin
          for I in Index_Type loop
             ... Object ...
             -- Instead of ... Object (Param) ...
          end loop;
       end,
    begin
       Scan (Object (Param));
    end;

I don't know what to think about it, looks too much like a big trick in  
Ada source and this is even much longer than using the previous prefix  
notation along with a local constant.

What do you feel about this?


-- 
“Syntactic sugar causes cancer of the semi-colons.” [1]
“Structured Programming supports the law of the excluded muddle.” [1]
[1]: Epigrams on Programming — Alan J. — P. Yale University



  reply	other threads:[~2012-02-10 15:07 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-09 21:10 Convention for naming of packages Yannick Duchêne (Hibou57)
2012-02-09 21:39 ` Jeffrey Carter
2012-02-10 15:07   ` Yannick Duchêne (Hibou57) [this message]
2012-02-10 17:04     ` Georg Bauhaus
2012-02-10 17:09     ` Georg Bauhaus
2012-02-10 17:41       ` Yannick Duchêne (Hibou57)
2012-02-13  9:33       ` Yannick Duchêne (Hibou57)
2012-02-11  0:56     ` Randy Brukardt
2012-02-13  3:09       ` BrianG
2012-02-10 17:21   ` Pascal Obry
2012-02-10 18:03     ` Yannick Duchêne (Hibou57)
2012-02-11  1:06     ` Randy Brukardt
2012-02-11  9:22       ` Simon Wright
2012-02-11 10:17         ` Yannick Duchêne (Hibou57)
2012-02-11 19:24           ` Yannick Duchêne (Hibou57)
2012-02-11 20:06             ` Simon Wright
2012-02-12  9:18               ` Yannick Duchêne (Hibou57)
2012-02-12 10:22                 ` Simon Wright
2012-02-13  9:21         ` Yannick Duchêne (Hibou57)
2012-02-12 19:53       ` J-P. Rosen
2012-02-12 21:19         ` Yannick Duchêne (Hibou57)
2012-02-13  8:53           ` Dmitry A. Kazakov
2012-02-13  9:12             ` Yannick Duchêne (Hibou57)
2012-02-13 11:03               ` Dmitry A. Kazakov
2012-02-13 11:57                 ` Yannick Duchêne (Hibou57)
2012-02-13 12:30                   ` Yannick Duchêne (Hibou57)
2012-02-13 13:07                     ` Dmitry A. Kazakov
2012-02-13 14:01                       ` Yannick Duchêne (Hibou57)
2012-02-13 14:59                         ` Dmitry A. Kazakov
2012-02-13 15:05                           ` Yannick Duchêne (Hibou57)
2012-02-13 15:23                             ` Dmitry A. Kazakov
2012-02-14 21:02                               ` Yannick Duchêne (Hibou57)
2012-02-13 13:01                   ` Dmitry A. Kazakov
2012-02-13 13:04                     ` Yannick Duchêne (Hibou57)
2012-02-13 13:19                       ` Dmitry A. Kazakov
2012-02-13 14:20                         ` Yannick Duchêne (Hibou57)
2012-02-13 15:11                           ` Dmitry A. Kazakov
2012-02-13 16:24                             ` Yannick Duchêne (Hibou57)
2012-02-13 17:19                               ` Dmitry A. Kazakov
2012-02-13 18:10                                 ` Yannick Duchêne (Hibou57)
2012-02-13 21:02                                   ` Dmitry A. Kazakov
2012-02-14  9:08                                     ` Yannick Duchêne (Hibou57)
2012-02-14 13:33                                       ` Dmitry A. Kazakov
2012-02-14 14:40                                         ` Yannick Duchêne (Hibou57)
2012-02-14 15:26                                           ` Dmitry A. Kazakov
2012-02-13 10:45             ` Georg Bauhaus
2012-02-13 10:59               ` Yannick Duchêne (Hibou57)
2012-02-14 10:18           ` Yannick Duchêne (Hibou57)
2012-02-14 11:51             ` Yannick Duchêne (Hibou57)
2012-02-14 22:21               ` Manuel Collado
2012-02-15  4:09                 ` Simon Wright
2012-02-15  6:13                   ` Niklas Holsti
2012-02-15 11:26                     ` Yannick Duchêne (Hibou57)
2012-02-15 11:39                     ` Georg Bauhaus
2012-02-15 11:47                       ` Georg Bauhaus
2012-02-15  6:30                   ` J-P. Rosen
2012-02-15  8:36                     ` Simon Wright
2012-02-15 22:56                     ` Robert A Duff
2012-02-15 11:27                   ` Yannick Duchêne (Hibou57)
2012-02-15 11:43                     ` Georg Bauhaus
2012-02-15 12:33                       ` Georg Bauhaus
2012-02-15 12:55                         ` Yannick Duchêne (Hibou57)
2012-02-15 17:30                           ` Georg Bauhaus
2012-02-09 22:33 ` Simon Wright
2012-02-09 22:35 ` J-P. Rosen
2012-02-10 14:38   ` Yannick Duchêne (Hibou57)
2012-02-10  9:47 ` Mart van de Wege
2012-02-10 14:24   ` Yannick Duchêne (Hibou57)
2012-02-13  3:02     ` BrianG
2012-02-10 12:19 ` Brian Drummond
2012-02-10 14:22   ` Yannick Duchêne (Hibou57)
2012-02-10 19:16   ` Jeffrey Carter
2012-02-11 16:31 ` Martin Dowie
2012-02-16 17:44 ` Convention for naming of anything Yannick Duchêne (Hibou57)
2012-02-17 19:46   ` Yannick Duchêne (Hibou57)
2012-02-17 21:53     ` Manuel Collado
2012-02-17 22:12       ` Yannick Duchêne (Hibou57)
2012-02-17 23:52   ` Adam Beneschan
2012-02-18  0:24     ` Yannick Duchêne (Hibou57)
2012-02-18  0:50       ` Yannick Duchêne (Hibou57)
2012-02-18 22:53         ` BrianG
2012-02-19 11:16           ` Simon Wright
2012-03-06  0:36             ` Randy Brukardt
2012-02-18 11:32   ` Georg Bauhaus
2012-02-18 13:02     ` Yannick Duchêne (Hibou57)
2012-02-19 18:07   ` Phil Clayton
2012-02-19 21:53     ` Yannick Duchêne (Hibou57)
2012-02-20  0:21       ` Phil Clayton
replies disabled

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