|
Bad? Maybe.
Unfortunate? Yes.
Looks like he is working with Zebra printers; better he than me!
|
|
|
|
|
It may be cleaner to write the printer interaction in a C++ library and then export simpler functions that are called from C#, or even a very thin C++/CLI wrapper.
|
|
|
|
|
A colleague told me about a great bugfixing experience: a local variable had the same name as a member variable. "But the compiler will show you a warning." - "No, it does not."
Hard to believe, hence I tried it with a very simple class. My colleague was right: there is no compiler warning when a local variable overwrites a member variable.
But there are some tools which could help us here, like StyleCop. I installed StyleCop, and eventually got it accepting my code:
namespace Nonsense
{
public class DontDoThat
{
private int someValue = 0;
public void DoSomething()
{
if (this.someValue == 0)
{
this.DoSomethingElse();
}
}
private void DoSomethingElse()
{
int someValue = 42;
int somethingElse = someValue * someValue;
}
}
}
Well, that's clean code, isn't it? StyleCop suggested great things. Still a local variable can overwrite a member variable, but now you see the difference more clearly: a member variable has a "this." prefix. Hungarian notation is so great.
|
|
|
|
|
If Visual Studio did everything for you, there'd be no reason to buy a tool like ReSharper!
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Good point. But are sure that ReSharper does find that? Really, did you check it?
|
|
|
|
|
|
It doesn't give you a warning because it's perfectly valid code. If you want to use the class var, you can qualify it with this.varname .
Don't make the mistake of using the IDE as a crutch.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Why would the compiler complain, name scope is part of the language
|
|
|
|
|
Strictly speaking, there is no need for a compiler warning here really. It's well defined C# language behavior. Also, nothing's overwriting anything here. You declare a local and use the local. It has the same name as a member, but that's not the compiler's problem.
That said, code analysis would catch this.
See CA1500: Variable names should not match field names[^]
|
|
|
|
|
# Human injection
#
# Strings which may cause human to reinterpret worldview
If you're reading this, you've been in a coma for almost 20 years now. We're trying a new technique. We don't know where this message will end up in your dream, but we hope it works. Please wake up, we miss you.
from the big list of nasty strings[^]
|
|
|
|
|
I used to work with Tyson.
|
|
|
|
|
F-ES Sitecore wrote:
I used to work with Tyson. |
Is that a euphenism?
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|
|
I ended up doing this to myself a few weeks ago.
public class MyObject
{
private int _number;
public MyObject(int number)
{
_number = number;
}
public int Number
{
get { return Number; }
}
}
If took me 20 minutes to figure out why I kept getting a stackoverflow execption.
I need to pay more attention to what intellisense is suggesting I type. This goes double for properties since VS steps over them by default.
if (Object.DividedByZero == true) { Universe.Implode(); }
|
|
|
|
|
Foothill wrote: since VS steps over them by default.
And then trying to remember where the setting is takes an additional twenty minutes.
|
|
|
|
|
Intellisense is not all that intelligent. What I would like is having Intellisense NOT select the property/method/etc you are currently typing in as the default item! How hard could it be to do that?
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
Brisingr Aerowing wrote: Intellisense is not all that intelligent
Still, it's come a long way since VS 6.0 when you had to type (or paste) all your variable names. I've been there recently and kept scrolling the mouse wheel, waiting for something to happen!
"Go forth into the source" - Neal Morse
|
|
|
|
|
Oldest VS version I've used is 2008.
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
Ouch, 20 mins? Never looked at the stack trace when you got the exception?
Wout
|
|
|
|
|
You don't get a stack trace with a StackOverflowException. The application just quits.
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
|
Nope, I had a similar issue a while ago. The VS debugger just gives up with a StackOverflow error which is terrible. 20mins is admirable, I spent half a day learning from this experience.
|
|
|
|
|
Maybe I'm a super ninja, but I only takes me a few minutes finding them. Turn on break on exceptions, and if that's too late you can usually pause the program after the cpu goes to 100% for a few secs, and voila you got your stack trace. Has worked for years for me.
Wout
|
|
|
|
|
On my machine it happens in less than a second. So no time to break the debugger.
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
I'm having both ninja skills and a magic core i7 then, sweet.
Wout
|
|
|
|
|
Lesson learnt: Do not use Intellisense for anything other than saving a few keystrokes.
|
|
|
|