|
Agreed - variable masking is a bad idea, it leads to some very hard to spot bugs.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
In the code where the view get's cleared from the current model (i.e. when you want to save changes in the program but have everything cleared), I have found this little gem:
(Variable-Names changed to protect the innocent)
if(view != null)
{
SetUI(view);
myTree.Update(view);
}
else
{
MessageBox.Show("Error when saving, Model is lost in space");
}
As you'd assume, every change is lost when the view is null, and the user has no idea what just happened.
|
|
|
|
|
dakovinc wrote: and the user has no idea what just happened.
Of course they have! they know that the data he entered took the wrong path and ended up in a black hole!
I'm brazilian and english (well, human languages in general) aren't my best skill, so, sorry by my english. (if you want we can speak in C# or VB.Net =p)
|
|
|
|
|
Sentenryu wrote: Of course they have! they know that the data he entered took the wrong path and
ended up in a black hole!
Always Keep Smiling.
Yours Pankaj Nikam
|
|
|
|
|
Is that a web app? I hope someone dismisses that message box...
|
|
|
|
|
For god's sake!
Luckily, it isn't a web app!
|
|
|
|
|
It reminds me of an old term for a crashed program that 'went to east hyperspace':
1.hyperspace
A memory location that is far away from where the program counter should be pointing, especially a place that is inaccessible because it is not even mapped in by the virtual-memory system. “Another core dump — looks like the program jumped off to hyperspace somehow.” (Compare jump off into never-never land.) This usage is from the SF notion of a spaceship jumping into hyperspace, that is, taking a shortcut through higher-dimensional space — in other words, bypassing this universe. The variant east hyperspace is recorded among CMU and Bliss hackers.
At least artificial intelligence already is superior to natural stupidity
|
|
|
|
|
dakovinc wrote: the user has no idea what just happened
Do they ever have any idea?
|
|
|
|
|
Sadly, no. (or almost never)
This is especially true for the users of the program where this code came from.
|
|
|
|
|
I'd be looking for other related error messages:
MessageBox.Show("Danger Will Robinson");
MessageBox.Show("Never fear, Smith is here!");
|
|
|
|
|
Found this in code I wrote a long time ago. Not the stupidest code ever perhaps, but it's just, well, see for yourself.
size = 29;
if (width > 11 || height > 4)
{
size++;
if (width > 13 || height > 5)
{
size++;
if (width > 15 || height > 6)
{
size++;
if (width > 18 || height > 7)
{
size++;
if (width > 19 || height > 8)
{
size++;
if (width > 21 || height > 10)
{
SpreadCompressed(width, width > 21, height > 10, xpos, ypos);
}
else
{
Spread(width, 8, 7, xpos, ypos);
}
}
else
{
Spread(width, 9, 9, xpos, ypos);
}
}
else
{
Spread(width, 9, 10, xpos, ypos);
}
}
else
{
Spread(width, 11, 12, xpos, ypos);
}
}
else
{
Spread(width, 13, 14, xpos, ypos);
}
}
else
{
Spread(width, 15, 16, xpos, ypos);
}
|
|
|
|
|
I used to have a flash drive with code projects on it from my first semester in college. It was a unique set of code
Flash drive died though, and I never had a backup.
If it moves, compile it
|
|
|
|
|
This is a good example of even when there are a lot of nesting levels, the code can be formatted so that it is readable and understandable.
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]
|
|
|
|
|
Yes, and I can't remember why I wrote it this way. It should never even have happened in the first place.
|
|
|
|
|
So what's the alternative?
|
|
|
|
|
Well I could have done this:
if (width <= 11 && height <= 4)
{
size = 29;
Spread(width, 15, 16, xpos, ypos);
}
else if (width <= 13 && height <= 5)
{
size = 30;
Spread(width, 13, 14, xpos, ypos);
}
else if (width <= 15 && height <= 6)
{
size = 31;
Spread(width, 11, 12, xpos, ypos);
}
else if (width <= 18 && height <= 7)
{
size = 32;
Spread(width, 9, 10, xpos, ypos);
}
else if (width <= 19 && height <= 8)
{
size = 33;
Spread(width, 9, 9, xpos, ypos);
}
else if (width <= 21 && height <= 10)
{
size = 34;
Spread(width, 8, 7, xpos, ypos);
}
else
{
size = 34;
SpreadCompressed(width, width > 21, height > 10, xpos, ypos);
}
Not great either, but still better I would say. At least the width and height requirements are actually grouped together with what should happen if they're met, instead of in a weird inverted way moved as far apart as possible.
|
|
|
|
|
Perhaps a map with a key class for width and height, and a value class for the passed parameters. Use std::map::upper_bound() to find the element you're looking for....
then it'll be dynamic with no hard coding...
|
|
|
|
|
It's over 9,000!!!!!!
I assume you have been waiting for that.
|
|
|
|
|
harold aptroot wrote: code I wrote a long time ago You dare admit that here?
Although I must admit I've written something like five nested if's just today...
It's an OO world.
public class Naerling : Lazy<Person>{
public void DoWork(){ throw new NotImplementedException(); }
}
|
|
|
|
|
How about something along the lines of:
size = 29;
if(width > 11 || height > 4) size++;
if(width > 13 || height > 5) size++;
if(width > 15 || height > 6) size++;
if(width > 18 || height > 7) size++;
if(width > 19 || height > 8) size++;
if(width > 21 || height > 10) size++;
switch(size) {
case 29: Spread(width, 15, 16, xpos, ypos); break;
case 30: Spread(width, 13, 14, xpos, ypos); break;
case 31: Spread(width, 11, 12, xpos, ypos); break;
case 32: Spread(width, 9, 10, xpos, ypos); break;
case 33: Spread(width, 9, 9, xpos, ypos); break;
case 34: Spread(width, 8, 7, xpos, ypos); break;
case 35: SpreadCompressed(width, width > 21, height > 10, xpos, ypos); break;
}
|
|
|
|
|
There is no size 35 though, so I'm afraid case 34 would have to be a bit ugly..
|
|
|
|
|
Then I would amend it to:
size = 29;
if(width > 11 || height > 4) size++;
if(width > 13 || height > 5) size++;
if(width > 15 || height > 6) size++;
if(width > 18 || height > 7) size++;
if(width > 19 || height > 8) size++;
if(width > 21 || height > 10) size++;
switch(size) {
case 29: Spread(width, 15, 16, xpos, ypos); break;
case 30: Spread(width, 13, 14, xpos, ypos); break;
case 31: Spread(width, 11, 12, xpos, ypos); break;
case 32: Spread(width, 9, 10, xpos, ypos); break;
case 33: Spread(width, 9, 9, xpos, ypos); break;
case 34: Spread(width, 8, 7, xpos, ypos); break;
case 35:
SpreadCompressed(width, width > 21, height > 10, xpos, ypos);
size--;
break;
|
|
|
|
|
Is size used elsewhere?
I would have probably calculated a widthSize and a heightSize separately and then
size = max(widthSize, heightSize)
This approach basically replaces six || operators with one compare in the max() function.
You could have used an array, switch statement, collection or even if statements for calculating/looking up widthSize and heightSize.
switch would probably be most readable (and fastest for these datapoints).
|
|
|
|
|
I don't know what to say so :
pfft....
Rtn = ""
Rtn = Rtn & " Some text " & vbCrLf
... repeat that many times ...
Content = Rtn
MainInfo = WrapContent(Content)
Function WrapContent(connection,content)
Rtn = ""
Rtn = Rtn & ... logic for gathering more information (all in h4 tags) with vbCrLf ..
if Content > "" then
Rtn = Rtn & "" & vbCrLf
Rtn = Rtn & Content
xRtn = Rtn
Rtn = HtmlReFormat(xRtn & vbCrLf)
end if
WrapContent = Rtn
End Function
Function HtmlReFormat(Content)
Content = Replace(Content,vbCRLF,"<br>")
Content = Replace(Content," "," ")
End Function
Variable = trim(rs("some value"))
Variable = iif(Variable,"=","value","Something",Variable)
Variable = iif(Variable,"=","other value","Something",Variable)
Variable = iif(Variable,"=","yet another value","Something",Variable)
... a few more times ...
Variable = iif(Variable,"=","","Undefined",Variable)
Function IIF(sVal1, Equal, sVal2 , IfTrue, IfFalse)
dim Rtn
Equal = trim(Equal)
select case Equal
case "="
if sVal1 = sVal2 then
Rtn = IfTrue
Else
Rtn = IfFalse
End If
case "<"
if sVal1 < sVal2 then
Rtn = IfTrue
Else
Rtn = IfFalse
End If
case ">"
if sVal1 > sVal2 then
Rtn = IfTrue
Else
Rtn = IfFalse
End If
case "<="
if sVal1 <= sVal2 then
Rtn = IfTrue
Else
Rtn = IfFalse
End If
case ">="
if sVal1 >= sVal2 then
Rtn = IfTrue
Else
Rtn = IfFalse
End If
end select
IIF = Rtn
End Function
If it moves, compile it
|
|
|
|
|
Wow...
You should stick an Option Explicit in there and wait for the guy to come complaining about a bunch of compile errors that weren't there yesterday...
And I love how he defines his own "enhanced" version of IIf...
|
|
|
|
|