|
First you need to remember your user are absolute bloody idiots who have no regard for logic and no common sense, now you need to deal with it, validate and check everything.
A REALLY defensive program does not need any internal error trapping. Better still just disconnect the keyboard and mouse, then they can't screw your app.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Assume you will have a software tester that will try to break the function you wrote (that is their job) in anyway they can think of without editing the actual function (thus by only modifying the inputs (input arguments/global variables)), and try to prevent them from doing so.
"Program testing can be used to show the presence of bugs, but never to show their absence."
<< please vote!! >></div>
|
|
|
|
|
I always thought about programming differently after I accidentally coded a few infinite loops that crashed because of lack of stack space, or what not...
Later, it was described as defensive programming.
My favorite example, is one I blew up. Given a string, pad it to the left until it is 32 characters in length.
A$ = " " + A$ until len(A$) = 32
Which, of course, if you are given a string that is already too long, this will crash.
So, quickly I learned
While len(A$) < 32 do A$ = " " + A$
Always look for the comparison that avoids doing work under the most conditions. Here, there are a LOT of times you know to stop. The = was limited to exactly one condition.
That one lesson, I have used over the years, and I refactor code that is logically correct when changed to be like this. The reduction of errors/issues is amazing. (truth is, I hate debugging, and prefer to desk check my code. I grew up with OVERNIGHT compilers, so syntax errors cost you a day. In fact, all errors cost you a day)
|
|
|
|
|
Kirk 10389821 wrote: While len(A$) < 32 do A$ = " " + A$ Why use a loop when you can do something like
A$ = Right(put 32 spaces in quotes here + A$, 32)
Curious - if I actually put 32 spaces in quotes, it gets trimmed. hmmm.
There are strangers on the Plain, Croaker
|
|
|
|
|
Oh, I have done it that way in a hurry!
But what happens when len(A$) is NEAR the limit of a string length (ie has less than 32 characters left). You could actually lose the right side of the string!!!
Also, the 32 was chosen for simplicity, as was the space. I believe the actual code had a variable for the length, and another for the padding character.
But the nuances is what makes defensive programming powerful. Most people don't think in terms of limits. They EXPECT a "small" string to be passed in when they are WRITING the code, and it NEVER dawns on them how the code could be called in the future.
I know from first (and second) hand experience that defensive style programming reduces errors and the debugging efforts required. I would rather fail with ASSERT() failures than to let code execute with bad parameters and pray for good luck.
|
|
|
|
|
I knew a VBA programmer who used "On Error Resume Next" as the first line of every Procedure/Function/Method.
System never crashed. Half the code never ran but it never crashed.
|
|
|
|
|
Sorry for the delay, i have to create some documents to give a training course tomorrow.
(d||b)x^² (9) One Word
- Hint : The obfuscation is separated in 2 "images"
EDIT: Oh gawd im sorry i forgot one char
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
modified 3-Nov-15 6:55am.
|
|
|
|
|
syllabus
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
2 B
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
I'm more like 3X
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
:P
you just will get the 2 Black with that answer
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
|
calculus???
cheers,
Super
------------------------------------------
Too much of good is bad,mix some evil in it
modified 3-Nov-15 6:48am.
|
|
|
|
|
Leave it there - in the absence of clues, I need the Mastermind values!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Oh yeah... I forgot about the mastermind clues. Let us see
cheers,
Super
------------------------------------------
Too much of good is bad,mix some evil in it
|
|
|
|
|
Nope
1 White
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
modified 3-Nov-15 6:55am.
|
|
|
|
|
|
I forgot one char, now it is solvable
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
Formula
PooperPig - Coming Soon
|
|
|
|
|
You know you need 9 letters ?
but still you would get 2 White
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
symmetric?
There are 2 parts that are representing symmetry
"(d|" and "|b)" are symmetric
x^2 is a symmetric graph.
|
|
|
|
|
You nailed it, perfect explanation.
Now get your medal
|_/
(o)
BTW: You are up tomorrow!
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
Nice one.
I doubt I'll be able to set such a good one
|
|
|
|
|
This place is going to the dogs
We can’t stop here, this is bat country - Hunter S Thompson RIP
|
|
|
|
|
You can't just wait 4 Minutes can't you
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|