Hi,
I was wondering, I've been reading some C++ code written by others,
usually libraries and stuff, and I've come across what strikes me as a
distinctive style that pervades most of the code I've been reading.
What I'm talking about is that some variables are declared with a "_"
prefix while others lack it. For example you may find a variable and
even functions like
int _temp
and one like
int temp
>From a Java perspective, this style is quite new to me, seeing as the
Java compiler does not accept variables of the aforementioned type. I
have, however, seen this used also in C, but not to the same degree,
and I have ignored it. But it has come to a point where I see it so
much that I think it carries some kind of significance such that if I
understood then I could grasp code quicker.
Explain away, or BS away, I'm willing to listen.
Thanks,
Matt 6 1857 ga*******@gmail.com wrote:
Hi,
I was wondering, I've been reading some C++ code written by others,
usually libraries and stuff, and I've come across what strikes me as a
distinctive style that pervades most of the code I've been reading.
What I'm talking about is that some variables are declared with a "_"
prefix while others lack it. For example you may find a variable and
even functions like
int _temp
and one like
int temp
Names with either a leading underscore followed by a capital letter or
two leading underscores are reserved for the implementation. That's why
you are seeing them in libraries.
It's common practice to avoid all names with a single leading underscore
in application code.
--
Ian Collins.
On 2007-07-20 10:41, Robert Bauck Hamar wrote:
Erik Wikström wrote:
>On 2007-07-20 09:59, ga*******@gmail.com wrote:
>>Hi,
I was wondering, I've been reading some C++ code written by others, usually libraries and stuff, and I've come across what strikes me as a distinctive style that pervades most of the code I've been reading. What I'm talking about is that some variables are declared with a "_" prefix while others lack it. For example you may find a variable and even functions like
int _temp
and one like
int temp
From a Java perspective, this style is quite new to me, seeing as the Java compiler does not accept variables of the aforementioned type. I have, however, seen this used also in C, but not to the same degree, and I have ignored it. But it has come to a point where I see it so much that I think it carries some kind of significance such that if I understood then I could grasp code quicker.
Explain away, or BS away, I'm willing to listen.
If you have read code mostly from libraries, and especially system libraries, this is understandable and could be considered good (or not) but if they are not system libraries it's probably not a good idea. The C++ standard specifies that all names beginning with __ (two underscores) are reserved for the implementation, this means that if you write an applications you should *never ever* use names that starts with two underscores.
Any name _containing_ two sequential underscores are reserved to the
implementation. It may be at the beginning, but also in the middle or at
the end. It doesn't really matter if it is in a nested namespace either.
Oh, you're right. Lucky that I've never used it (not that I can thing of
any situation where putting two underscore in a name might seem like a
good idea).
--
Erik Wikström ga*******@gmail.com wrote:
Hi,
I was wondering, I've been reading some C++ code written by others,
usually libraries and stuff, and I've come across what strikes me as a
distinctive style that pervades most of the code I've been reading.
What I'm talking about is that some variables are declared with a "_"
prefix while others lack it. For example you may find a variable and
even functions like
int _temp
and one like
int temp
>>From a Java perspective, this style is quite new to me, seeing as the
Java compiler does not accept variables of the aforementioned type. I
have, however, seen this used also in C, but not to the same degree,
and I have ignored it. But it has come to a point where I see it so
much that I think it carries some kind of significance such that if I
understood then I could grasp code quicker.
Explain away, or BS away, I'm willing to listen.
Thanks,
Matt
I use that style to indicate member variables. I think it's commonly
accepted that it's good to distinguish member variables from others
(even in Java) but I'm often criticised here for my particular way of
doing it. I don't care, it's correct and I like it.
John
John Harrison wrote:
:: ga*******@gmail.com wrote:
::: Hi,
:::
::: I was wondering, I've been reading some C++ code written by
::: others, usually libraries and stuff, and I've come across what
::: strikes me as a distinctive style that pervades most of the code
::: I've been reading. What I'm talking about is that some variables
::: are declared with a "_" prefix while others lack it. For example
::: you may find a variable and even functions like
:::
::: int _temp
:::
::: and one like
:::
::: int temp
:::
:::: From a Java perspective, this style is quite new to me, seeing
:::: as the
::: Java compiler does not accept variables of the aforementioned
::: type. I have, however, seen this used also in C, but not to the
::: same degree, and I have ignored it. But it has come to a point
::: where I see it so much that I think it carries some kind of
::: significance such that if I understood then I could grasp code
::: quicker.
:::
::: Explain away, or BS away, I'm willing to listen.
:::
::: Thanks,
:::
::: Matt
:::
::
:: I use that style to indicate member variables. I think it's
:: commonly accepted that it's good to distinguish member variables
:: from others (even in Java) but I'm often criticised here for my
:: particular way of doing it. I don't care, it's correct and I like
:: it.
I guess the criticism is that, although correct, a leading underscore
indicates that a name is now *either* a member variable, or a global
implementation-specific name, or possibly both.
I understand that some of your colleagues can be a bit confused by
this. :-)
Bo Persson
On 2007-07-21 13:01, Bo Persson wrote:
John Harrison wrote:
:: ga*******@gmail.com wrote:
::: Hi,
:::
::: I was wondering, I've been reading some C++ code written by
::: others, usually libraries and stuff, and I've come across what
::: strikes me as a distinctive style that pervades most of the code
::: I've been reading. What I'm talking about is that some variables
::: are declared with a "_" prefix while others lack it. For example
::: you may find a variable and even functions like
:::
::: int _temp
:::
::: and one like
:::
::: int temp
:::
:::: From a Java perspective, this style is quite new to me, seeing
:::: as the
::: Java compiler does not accept variables of the aforementioned
::: type. I have, however, seen this used also in C, but not to the
::: same degree, and I have ignored it. But it has come to a point
::: where I see it so much that I think it carries some kind of
::: significance such that if I understood then I could grasp code
::: quicker.
:::
::: Explain away, or BS away, I'm willing to listen.
:::
::: Thanks,
:::
::: Matt
:::
::
:: I use that style to indicate member variables. I think it's
:: commonly accepted that it's good to distinguish member variables
:: from others (even in Java) but I'm often criticised here for my
:: particular way of doing it. I don't care, it's correct and I like
:: it.
I guess the criticism is that, although correct, a leading underscore
indicates that a name is now *either* a member variable, or a global
implementation-specific name, or possibly both.
And the risk that someday a less knowledgeable programmer will come and
make a change to your code and follow your style but uses a capital
letter as first letter. One of the main reasons it'd discouraged is
probably to prevent people who don't know better from screwing up in
hard-to-debug ways.
--
Erik Wikström
On Jul 21, 1>01 pm, "Bo Persson" <b...@gmb.dkwrote>
John Harrison wrote>
gara.m...@gmail.com wrote>
>I was wondering, I've been reading some C++ code written by others, usually libraries and stuff, and I've come across what strikes me as a distinctive style that pervades most of the code I've been reading. What I'm talking about is that some variables are declared with a "_" prefix while others lack it. For example you may find a variable and even functions like
>int _temp
>and one like
>int temp
>From a Java perspective, this style is quite new to me, seeing as the Java compiler does not accept variables of the aforementioned type.
This is, of course, false. Java is even more liberal than C++,
as it not only allows names to begin with either a _ or $ (the
latter is illegal in C++), but doesn't reserve any of them for
the implementation.
>I have, however, seen this used also in C, but not to the same degree, and I have ignored it. But it has come to a point where I see it so much that I think it carries some kind of significance such that if I understood then I could grasp code quicker.
>Explain away, or BS away, I'm willing to listen.
I use that style to indicate member variables. I think it's
commonly accepted that it's good to distinguish member variables
from others (even in Java) but I'm often criticised here for my
particular way of doing it. I don't care, it's correct and I like
it.
I guess the criticism is that, although correct, a leading underscore
indicates that a name is now *either* a member variable, or a global
implementation-specific name, or possibly both.
Not really. The criticism is that, regardless of what the
standard says, system headers commonly DO define macros which
start with a _, and assume that this will not cause problems.
Using a _ prefix is just asking for trouble.
In general, as others have pointed out, library code intended to
be considered part of the implementation will make extensive use
of such symbols, precisely because the user is not allowed to
define them.
Outside of such library code, it seems pretty universal to
distinguish member variables from other names. In principle, if
you name well, it shouldn't be necessary, but such conventions
certainly don't do any harm. In cases where the variable
represents an externally visible attribute, they also allow the
setter/getter functions to have the name of the attribute. I've
seen at least four different conventions for this:
_member
member_
m_member
myMember
The first is, as I've just said, looking for trouble. The
second is, IMHO, just too ugly. The latter two also have the
advantage of extending easily to distinguish between static
members (s_member, ourMember) and non-static members. I use the
last in my own code; I like the fact that the results are
pronouceable. But I'll willingly either, according to the
requirements of the local standards.
--
James Kanze (Gabi Software) email: ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: srijit |
last post by:
Hello,
Here is an example code of xml writer in Python+PythonNet, Ironpython
and Boo. The codes look very similar.
Regards,
Srijit
Python + PythonNet:
import CLR
|
by: Steven T. Hatton |
last post by:
This is something I've been looking at because it is central to a currently
broken part of the KDevelop new application wizard. I'm not complaining
about it being broken, It's a CVS images. ...
|
by: Merrill & Michele |
last post by:
A derangement is a mapping of a set onto itself leaving no element fixed. I
realized that that was what I was programming when I was asked to randomly
determine who buys presents for whom this...
|
by: Osama Rajab |
last post by:
Hi Guys,
When I skim fast into my old code or others code, I
forget what the type of a certain variable was or what
its initialization value was.
We use the Hungarian notation and it helps to...
|
by: Patrick |
last post by:
The c# code style guide that I follow suggests that class variables (fields)
be coded with camel casing, like this:
int recordId;
string name;
It also suggests that variables within methods...
|
by: Steven Scaife |
last post by:
Hello
I am creating a reporting system using SQL Server 2000 and ASP, I have
created 4 pages that display the results i want, however the reports take an
average of 20 mins to run and i have...
|
by: Michael |
last post by:
Hi,
I'm trying to get my head around the relationship between pointers and
arrays.
If I have the following:
int even = {2,4,6,8,10};
int *evenPtr = {even+4, even+3, even+2, even+1, even};...
|
by: Martin |
last post by:
Can I have two setTimeouts running at the same time - with two
different intervals?
I want to start one timer and, before it times out, start another one
I've tried this and they seems to...
|
by: tshad |
last post by:
Using VS 2003, I am trying to take a class that I created to create new
variable types to handle nulls and track changes to standard variable types.
This is for use with database variables. This...
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: Vimpel783 |
last post by:
Hello!
Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
|
by: jfyes |
last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: Shællîpôpï 09 |
last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
| |