comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: Style: always declare subrountines?
Date: 12 Nov 2002 12:31:30 -0500
Date: 2002-11-12T17:42:25+00:00	[thread overview]
Message-ID: <uy97y4rv1.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: 3dccc023$0$304$bed64819@news.gradwell.net

porton@ex-code.com (Victor Porton) writes:

> How do you consider this:
> 
> If one would always declare every subrountine of a package body in the 
> specification (in the public or in the private part) 

Far too restrictive. There are many times when it is good to implement
many small subprograms in the body, that simply do not belong in the
spec, public or private. Other children of the package should _not_
see them!

This is especially true when the body requires packages that the spec
does not. Moving subprogram declarations to the spec then requires
moving the package "with" clauses to the spec. This is sometimes
illegal, due to circularity or private children issues.

> this excludes the possibility that one may mistakedly create an
> internal subrountine with the same specification as a not yet
> implemented public procedure and forget to implement this public
> procedure and so get wrong program behavior.

If the public interface is not present, you'll get a compilation
error, not "wrong behavior".

Hmm, I guess you can get "wrong behavior" if you forgot to overload or
override a subprogram in the spec, and thus get the "parent"
subprogram. Is that what you are talking about? In that case, you can
sometimes make the parent procedure abstract

> Stylistic checkers for always declaring in package specification?

As others have said, there is no substitute for a good design process.

-- 
-- Stephe



  parent reply	other threads:[~2002-11-12 17:31 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-09  6:39 Style: always declare subrountines? Victor Porton
2002-11-09 11:09 ` sk
2002-11-09 12:34 ` Victor Porton
2002-11-09 14:34   ` Jim Rogers
2002-11-09 14:53   ` sk
2002-11-09 15:36 ` Robert A Duff
2002-11-09 16:16 ` Frank J. Lhota
2002-11-09 16:28 ` chris.danx
2002-11-09 18:36 ` Simon Wright
2002-11-12 17:31 ` Stephen Leake [this message]
2002-11-18  1:52 ` ;Re: " Richard Riehle
2002-11-28 10:32   ` John English
2002-11-28 12:52     ` Lutz Donnerhacke
2002-12-03 11:15       ` John English
2002-12-03 12:22         ` Lutz Donnerhacke
2002-12-03 13:11           ` John English
2002-12-03 14:31             ` Robert A Duff
2002-12-03 14:41               ` Lutz Donnerhacke
2002-11-28 17:49     ` Vincent Marciante
2002-12-03 11:09       ` John English
2002-11-28 18:45     ` "private with" proposal Vincent Marciante
2002-11-28 20:12       ` David C. Hoos, Sr.
2002-11-29  4:28         ` Vincent Marciante
2002-12-01  1:00           ` Dale Stanbrough
2002-12-02 18:20       ` Stephen Leake
2002-12-03  5:37         ` Vincent Marciante
2002-12-03 19:24           ` Randy Brukardt
2002-12-04  3:52             ` Vincent Marciante
replies disabled

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