Best practices question: Do you use the this keyword when using instance members in a method?
-
Is that C++? If it is, what exactly does that code do? I've never seen "this->!CMyClass();" before, and neither have the other programmers in our shop. If it's not C++, don't respnd to this post. ------- sig starts "I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
I think it is possible if you overload the () and ! operators in your class. -------- "I say no to drugs, but they don't listen." - Marilyn Manson
-
NO! Marc Pensieve
An unqualified denial, eh? :) Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi.
-
I use this. because of intesence. I tend toward long descriptive variable/method names, and with intelisence can generally get away with typing 7-10 chars instead of 15-25.
dan neely wrote:
because of intesence.
In VS2005, intellisense kicks in without needing "this.". :-D Marc Pensieve
-
[EDIT]Code given below is in C#, but the question holds for C++ and Java too, with suitable modifications.[/EDIT]
class Car
{
private int speed;
// ...
}If you have a class Car with an instance member speed, how do you refer to it in Car's methods?
public void SpeedUp(int delta)
{
speed += delta;
}or
public void SpeedUp(int delta)
{
this.speed += delta;
}I used to practise the former style and used the this keyword only to resolve name clashes, but am now converted to the latter style. Sure, there's Intellisense, but when I'm poring over thousands of lines of code, I don't want to move my mouse to the variable in question and hover it there. Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi. -- modified at 10:17 Tuesday 24th January, 2006
-
[EDIT]Code given below is in C#, but the question holds for C++ and Java too, with suitable modifications.[/EDIT]
class Car
{
private int speed;
// ...
}If you have a class Car with an instance member speed, how do you refer to it in Car's methods?
public void SpeedUp(int delta)
{
speed += delta;
}or
public void SpeedUp(int delta)
{
this.speed += delta;
}I used to practise the former style and used the this keyword only to resolve name clashes, but am now converted to the latter style. Sure, there's Intellisense, but when I'm poring over thousands of lines of code, I don't want to move my mouse to the variable in question and hover it there. Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi. -- modified at 10:17 Tuesday 24th January, 2006
Former. Always. If i have to worry about name clashes, the code isn't going to be readable anyway, since either i'm using way too many global variables, or the method has become so long that i cannot see at a glance which local variables have been defined. Either way, i have bigger problems.
---- Scripts i've known... CPhog 0.9.9 - make CP better. Forum Bookmark 0.2.1 - bookmark forum posts on Pensieve Print forum 0.1.2 - printer-friendly forums
-
dan neely wrote:
because of intesence.
In VS2005, intellisense kicks in without needing "this.". :-D Marc Pensieve
-
dan neely wrote:
because of intesence.
In VS2005, intellisense kicks in without needing "this.". :-D Marc Pensieve
Marc Clifton wrote:
In VS2005, intellisense kicks in without needing "this.".
Only for C# and possibly VB. It doesn't do that for C++ :-( Regards, Nish
-
[EDIT]Code given below is in C#, but the question holds for C++ and Java too, with suitable modifications.[/EDIT]
class Car
{
private int speed;
// ...
}If you have a class Car with an instance member speed, how do you refer to it in Car's methods?
public void SpeedUp(int delta)
{
speed += delta;
}or
public void SpeedUp(int delta)
{
this.speed += delta;
}I used to practise the former style and used the this keyword only to resolve name clashes, but am now converted to the latter style. Sure, there's Intellisense, but when I'm poring over thousands of lines of code, I don't want to move my mouse to the variable in question and hover it there. Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi. -- modified at 10:17 Tuesday 24th January, 2006
Since no one gave my own personal answer on this: I use this in c# when I don't feel like typing out the whole variable name. So if you look in my code you will find it randomly about 30% of the time. It's a bit of a non-issue really. If intellisense didn't require it (and it sounds like it might not in vs 2k5) I wouldn't use it at all, why type more than necessary.
-
Since no one gave my own personal answer on this: I use this in c# when I don't feel like typing out the whole variable name. So if you look in my code you will find it randomly about 30% of the time. It's a bit of a non-issue really. If intellisense didn't require it (and it sounds like it might not in vs 2k5) I wouldn't use it at all, why type more than necessary.
Same here. A few months ago I discovered the CTRL+J trick, which has cut down on my 'this' usage more yet.
Tech, life, family, faith: Give me a visit. I'm currently blogging about: Connor's Christmas Spectacular! Judah Himango
-
Same here. A few months ago I discovered the CTRL+J trick, which has cut down on my 'this' usage more yet.
Tech, life, family, faith: Give me a visit. I'm currently blogging about: Connor's Christmas Spectacular! Judah Himango
-
An unqualified denial, eh? :) Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi.
Vikram A Punathambekar wrote:
An unqualified denial, eh?
YES!!! ;P It's too much clutter. The only reason I see programmers do this is for Intellisense. Geez, these kids nowadays. (Besides, with VS2005, Intellisense kicks in as you start typing). Actually, the only time I use "this." is if I have a parameter with the same name as the field, and the ONLY time I do that is in a constructor, when the parameters in the constructor are initializing fields. Elsewhere, I use more descriptive names if there's going to be a collision, both in parameters and in local variables. Marc Pensieve
-
[EDIT]Code given below is in C#, but the question holds for C++ and Java too, with suitable modifications.[/EDIT]
class Car
{
private int speed;
// ...
}If you have a class Car with an instance member speed, how do you refer to it in Car's methods?
public void SpeedUp(int delta)
{
speed += delta;
}or
public void SpeedUp(int delta)
{
this.speed += delta;
}I used to practise the former style and used the this keyword only to resolve name clashes, but am now converted to the latter style. Sure, there's Intellisense, but when I'm poring over thousands of lines of code, I don't want to move my mouse to the variable in question and hover it there. Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi. -- modified at 10:17 Tuesday 24th January, 2006
I use the
this
keyword. ColinMackay.net "Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucius "If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell -
I used this just to diferenciate between members variables and the rest of them, ...until someone told me about the hungarian notation :rolleyes:
Gizzo wrote:
I used this just to diferenciate between members variables and the rest of them, ...until someone told me about the hungarian notation
:omg: You still use that! :-D ColinMackay.net "Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucius "If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
-
Gizzo wrote:
I used this just to diferenciate between members variables and the rest of them, ...until someone told me about the hungarian notation
:omg: You still use that! :-D ColinMackay.net "Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucius "If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
-
I use the
this
keyword. ColinMackay.net "Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucius "If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'DonnellColin Angus Mackay wrote:
I use the this keyword.
so do i !!! :doh:
TOXCCT >>> GEII power
[toxcct][VisualCalc 2.20][VCalc 3.0 soon...] -
[EDIT]Code given below is in C#, but the question holds for C++ and Java too, with suitable modifications.[/EDIT]
class Car
{
private int speed;
// ...
}If you have a class Car with an instance member speed, how do you refer to it in Car's methods?
public void SpeedUp(int delta)
{
speed += delta;
}or
public void SpeedUp(int delta)
{
this.speed += delta;
}I used to practise the former style and used the this keyword only to resolve name clashes, but am now converted to the latter style. Sure, there's Intellisense, but when I'm poring over thousands of lines of code, I don't want to move my mouse to the variable in question and hover it there. Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi. -- modified at 10:17 Tuesday 24th January, 2006
I'm lazy and haven't read the thread, but using "this." is just silly. Use "m_" and be done with it. ;) And before you gripe about Hungarian, think twice. How is "this." any different from a Hungarian prefix? You've just replaced a 2-character prefix with a 5-character prefix. --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Laugh it up, fuzzball.
-
[EDIT]Code given below is in C#, but the question holds for C++ and Java too, with suitable modifications.[/EDIT]
class Car
{
private int speed;
// ...
}If you have a class Car with an instance member speed, how do you refer to it in Car's methods?
public void SpeedUp(int delta)
{
speed += delta;
}or
public void SpeedUp(int delta)
{
this.speed += delta;
}I used to practise the former style and used the this keyword only to resolve name clashes, but am now converted to the latter style. Sure, there's Intellisense, but when I'm poring over thousands of lines of code, I don't want to move my mouse to the variable in question and hover it there. Cheers, Vikram.
"When I read in books about a "base class", I figured this was the class that was at the bottom of the inheritence tree. It's the "base", right? Like the base of a pyramid." - Marc Clifton. i dont mind to be a stupid,better than being a moron - Adnan Siddiqi. -- modified at 10:17 Tuesday 24th January, 2006
I had the bad habit of using a this prefix in my C# code, just for the intellisense. Now, I try and avoid it as it leads to sloppy coding. Michael CP Blog [^] Development Blog [^]
-
Colin Angus Mackay wrote:
You still use that!
what? the hungarian notation or this keyword? I use the hungarian notation. What's wrong with it? We have to use one, anyway.
Gizzo wrote:
What's wrong with it?
it's not cool any more. the smart people have decreed that we all need to use a different kind of notation now. Cleek | Image Toolkits | Thumbnail maker
-
Colin Angus Mackay wrote:
You still use that!
what? the hungarian notation or this keyword? I use the hungarian notation. What's wrong with it? We have to use one, anyway.
Gizzo wrote:
What's wrong with it?
It spent too long as a fad, which means lots of people think they know how to use it while in reality having no clue, most of them not even grasping the problem it was intended to solve. Sorta like "object-oriented programming"...
---- Scripts i've known... CPhog 0.9.9 - make CP better. Forum Bookmark 0.2.1 - bookmark forum posts on Pensieve Print forum 0.1.2 - printer-friendly forums
-
I'm lazy and haven't read the thread, but using "this." is just silly. Use "m_" and be done with it. ;) And before you gripe about Hungarian, think twice. How is "this." any different from a Hungarian prefix? You've just replaced a 2-character prefix with a 5-character prefix. --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Laugh it up, fuzzball.
Either way gets the job done, so long as everyone understands *why* it's being done and does it the same way. I still shudder every time i see someone prefixing a local variable with
m_
in a sad attempt to get copy-paste code working... :sigh:---- Scripts i've known... CPhog 0.9.9 - make CP better. Forum Bookmark 0.2.1 - bookmark forum posts on Pensieve Print forum 0.1.2 - printer-friendly forums