From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2afac1a4161c7f35 X-Google-Attributes: gid103376,public From: "Nick Roberts" Subject: Distinguishing type names from other identifiers Date: 1998/01/13 Message-ID: <01bd2078$a449b460$41fd82c1@xhv46.dial.pipex.com>#1/1 X-Deja-AN: 315680051 Content-Transfer-Encoding: 7bit References: <199801121523.QAA06527@basement.replay.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Organization: UUNet UK server (post doesn't reflect views of UUNet UK) Newsgroups: comp.lang.ada Date: 1998-01-13T00:00:00+00:00 List-Id: The technique I generally use for inventing a type identifier distinct from identifiers I might use for objects and parameters of that type is to make the type identifier one step more specific (and thus, usually, longer). The justification for using a longer identifier for the type, rather than for the objects and parameters, is that type identifiers are generally used less often in practical source text. For example: type Hour_Of_Day is range 0..23; type Minute_Of_Hour is range 0..59; type Seconds_Past_Minute is delta 0.001 range 0.000 .. 59.999; function To_Seconds_Past_Midnight (Hour: Hour_Of_Day; Minute: Minute_Of_Day; Seconds: Seconds_Past_Minute) return Day_Duration; This example illustrates (I hope ;-) that the use of a plural or singular form for an identifier is not naturally to do with whether it denotes a type, an object, a parameter, a subprogram, or whatever, but rather with whatever concept it describes. The choice of Seconds_Past_Minute is perhaps a little clumsy. I think this is the reason for many scientists' habit of using the singular form in formal language (as well as other archaic forms) where in common language the plural would be used; e.g. "... if Train A be travelling at twelve metre per second ...". On the subject of the standard Calendar package, I would probably have chosen the identifier Day_Of_Month rather than Day_Number, and Month_Of_Year rather than Month_Number. However, either way, the identifiers Day and Month can be conveniently used for identifiers of objects and parameters of these types. Adding _Type can be a useful way to distinguish a type, as a last resort I would suggest. I've always felt the 'size_t' introduced by ANSI C to be a relatively happy compromise between size and explicitness (NPI again!). So I reckon adding _T is not such a sin. But is it really worth saving the three -- count them, THREE -- extra letters? Come what may, I do quite strongly feel that a good programmer will strive to achieve a maximum of clarity, and a minimum of ambiguity, when choosing identifiers, and will not allow worries about typing sully this ideal. It is surely a fact that, in a few rare cases, choosing short (even terse) notation will have advantages which outweigh other considerations. But these cases are RARE, so say I. Finally, I think the declaration of the fixed-point type Seconds_Past_Minute in the example raises another interesting question. Should I have used 59.999 for the upper bound, or 60.000? Is it a bad omission that Ada does not provide for both open and closed bounds? -- Nick Roberts Croydon, UK Proprietor, ThoughtWing Software; Independent Software Development Consultant * Nick.Roberts@dial.pipex.com * Voicemail & Fax +44 181-405 1124 * *** Eats three shredded spams every morning for breakfast ***