[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: convention for declaring pointers?
From: |
Rik |
Subject: |
Re: convention for declaring pointers? |
Date: |
Mon, 24 Apr 2017 08:32:47 -0700 |
On 04/23/2017 10:40 PM, Mike Miller wrote:
> On Sun, Apr 23, 2017 at 22:15:27 -0700, Rik wrote:
>> jwe,
>>
>> Is there a convention for whether to cuddle the '*' for pointers with the
>> variable name, variable type, or neither? I noticed in
>> liboctave/array/idx-vector.h declarations such as the following
>>
>> idx_range_rep * r = dynamic_cast<idx_range_rep *> (rep);
>>
>> I started to change this to
>>
>> idx_range_rep *r = ...
>>
>> but then I realized that maybe the extra space is good. It is consistent
>> with the rest of Octave coding conventions which tends to emphasize extra
>> whitespace for readability. The space between the name of a function and
>> the opening parenthesis is an example of this openness.
> I've always seen the style
>
> idx_range_rep *r = ...
>
> preferred, and I think we pretty consistently prefer that in Octave so
> far. It also helps emphasize that the '*' is required for each
> declaration in a compound declaration like
>
> octave_idx_type *ridx, *cidx;
>
> GNU indent also corrects the string "int * x" to "int *x".
This is usually the style I have seen as well. What got me thinking about
the alternative construction was the analogy to nouns and adjectives in the
English language.
The declaration
int var;
is made of of a type (int, or noun) and a name (var). Now, if you add
modifiers they are generally associated with the noun rather than the
name. This works in C++ too as the type can have several modifiers.
unsigned int var;
unsigned short int var;
Finally, if something is a pointer one would say in English something like
"var is a pointer to unsigned int". If one could, the natural coding would be
* unsigned int var;
But, that's not legal syntax so the question was whether having all the
adjectives separated
unsigned int * var;
might be clearer than
unsigned int *var
Of course, names are proper nouns in English and can also be modified by
adjectives, for example, "the treacherous Lady Macbeth".
I don't have a dog in this race and am happy to use either.
--Rik