Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software in spite of unforeseeable usage of said software. Defensive programming techniques are used especially when a piece of software could be misused mischievously or inadvertently to catastrophic effect.
Questions tagged [defensive-programming]
148 questions
340
votes
24 answers
What's the purpose of using braces (i.e. {}) for a single-line if or loop?
I'm reading some lecture notes of my C++ lecturer and he wrote the following:
Use Indentation // OK
Never rely on operator precedence - Always use parentheses // OK
Always use a { } block - even for a single line // not OK, why ???
Const object…

JAN
- 21,236
- 66
- 181
- 318
255
votes
20 answers
When should I use Debug.Assert()?
I've been a professional software engineer for about a year now, having graduated with a CS degree. I've known about assertions for a while in C++ and C, but had no idea they existed in C# and .NET at all until recently.
Our production code contains…

Nicholas Mancuso
- 11,599
- 6
- 45
- 47
102
votes
14 answers
Techniques for obscuring sensitive strings in C++
I need to store sensitive information (a symmetric encryption key that I want to keep private) in my C++ application. The simple approach is to do this:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
However, running the…

Thomi
- 11,647
- 13
- 72
- 110
71
votes
7 answers
Erlang's let-it-crash philosophy - applicable elsewhere?
Erlang's (or Joe Armstrong's?) advice NOT to use defensive programming and to let processes crash (rather than pollute your code with needless guards trying to keep track of the wreckage) makes so much sense to me now that I wonder why I wasted so…

Andrew Matthews
- 3,006
- 2
- 29
- 42
48
votes
4 answers
Is it possible that Java String.split can return a null String[]
Is it possible for split to return a null String[]? I am curious as I want to try to be as defensive as possible in my code without having unnecessary checks. The code is as follows:
String[] parts = myString.split("\\w");
do I need to…

Woot4Moo
- 23,987
- 16
- 94
- 151
45
votes
1 answer
C++ always use explicit constructor
After reading the following blog :
http://xania.org/200711/ambiguous-overloading
I started asking myself "should I not always explicit define my constructors?"
So I started reading more than found out this article…

oopsi
- 1,919
- 3
- 21
- 28
44
votes
12 answers
0xDEADBEEF equivalent for 64-bit development?
For C++ development for 32-bit systems (be it Linux, Mac OS or
Windows, PowerPC or x86) I have initialised pointers that
would otherwise be undefined (e.g. they can not immediately
get a proper value) like so:
int *pInt = reinterpret_cast

Peter Mortensen
- 30,738
- 21
- 105
- 131
38
votes
12 answers
Does wrapping everything in try/catch blocks constitute defensive programming?
I have been programming for the last 3 years. When I program, I use to handle all known exceptions and alert the user gracefully. I have seen some code recently which has almost all methods wrapped inside try/catch blocks. The author says it is part…
Navaneeth
38
votes
14 answers
How defensively should I program?
i was working with a small routine that is used to create a database connection:
Before
public DbConnection GetConnection(String connectionName)
{
ConnectionStringSettings cs= ConfigurationManager.ConnectionStrings[connectionName];
…

Ian Boyd
- 246,734
- 253
- 869
- 1,219
35
votes
9 answers
How to hide strings in a exe or a dll?
I discovered that it is possible to extract the hard-coded strings from a binary.
For example the properties view of Process Explorer displays all the string with more than 3 characters.
Here is the code of a simple executable that I wrote to simply…

Winz
- 496
- 1
- 6
- 7
30
votes
5 answers
Is this code defensive programming, or bad practice?
I have this debate with my colleague about this piece of code:
var y = null;
if (x.parent != null)
y = x.parent.somefield;
My point of view is that in the place where the code is, x.parent should not POSSIBLY be null. And when it is null, we…

Allen Zhang
- 2,432
- 2
- 20
- 31
22
votes
5 answers
Copy constructors and defensive copying
What is a copy constructor?
Can someone share a small example that can be helpful to understand along with defensive copying principle?

user2094103
- 685
- 3
- 7
- 14
21
votes
2 answers
How to combine defensive programming techniques together?
The question I want to ask you is quite wide but in the same time it's very concrete. First, I have to say, that I mostly interested in answers which are applicable in the .net environment.
Well, I want to increase the level of the code I produce.…

Igor Soloydenko
- 11,067
- 11
- 47
- 90
17
votes
9 answers
Checklist for Web Site Programming Vulnerabilities
Watching SO come online has been quite an education for me. I'd like to make a checklist of various vunerabilities and exploits used against web sites, and what programming techniques can be used to defend against them.
What categories of …

Mark Harrison
- 297,451
- 125
- 333
- 465
15
votes
3 answers
What's the most defensive way to loop through lines in a file with Perl?
I usually loop through lines in a file using the following code:
open my $fh, '<', $file or die "Could not open file $file for reading: $!\n";
while ( my $line = <$fh> ) {
...
}
However, in answering another question, Evan Carroll edited my…

CanSpice
- 34,814
- 10
- 72
- 86