Hide global data. If you need to use global data, you can hide its implementation details behind a class interface. Working with global data through access routines provides several benefits compared...
Hurrying to solve a problem is one of the most time-ineffective things you can do.
As Thomas Hobbes observed in the 17th century, life under mob rule is solitary, poor, nasty, brutish and short. Life on a poorly run software project is solitary, poor, nasty, brutish, and hardly ever...
Usually more time is spent in making good-looking presentation slides than in improving the quality of the software.
Inheritance is a powerful tool for reducing complexity because a programmer can focus on the generic attributes of an object without worrying about the details. If a programmer must be constantly thin...
The process is called estimation, not exactimation. —Phillip Armour
The picture of the software designer deriving his design in a rational, error-free way from a statement of requirements is quite unrealistic. No system has ever been developed in that way, and probabl...
The most challenging part of programming is conceptualizing the problem, and many errors in programming are conceptual errors. Because
Summary of Design Heuristics Here's a summary of major design heuristics: More alarming, the same programmer is quite capable of doing the same task himself in two or three ways, sometimes unconscious...
NASA identifies reuse candidates at the ends of their projects. They then perform the work needed to make the classes reusable as a special project at the end of the main project or as the first step...
If the derived class isn't going to adhere completely to the same interface contract defined by the base class, inheritance is not the right implementation technique. Consider containment or making a...
Favor read-time convenience to write-time convenience. Code
In the vast majority of systems, efficiency isn't critical.
Developer testing should probably take 8 to 25 percent of the total project time.
Defect corrections have more than a 50 percent chance of being wrong the first time
Code reading detected about 80 percent more faults per hour than testing
You save time when you don't need to have an awards ceremony every time a C statement does what it's supposed to. Moreover,
There is no code so big, twisted, or complex that maintenance can't make it worse.
Programming assignments in school are devised to move you in a beeline from beginning to end. You'd probably want to tar and feather a teacher who gave you a programming assignment, then changed the a...
Programmers who program into a language first decide what thoughts they want to express, and then they determine how to express those thoughts using the tools provided by their specific language.