Quotes from Steve McConnell
Heuristic is an algorithm in a clown suit. It's less predictable, it's more fun, and it comes without a 30-day, money-back guarantee.
~ Steve McConnell
BazillionQuotes.com
There are no secrets on an successful software project. Both good and bad news must be able to move up and down the ptoject hierarchy without restriction.
~ Steve McConnell
BazillionQuotes.com
It's hard enough to find an error in your code when you're looking for it; it's even harder when you've assumed your code is error-free.
~ Steve McConnell
BazillionQuotes.com
Good code is its own best documentation.
~ Steve McConnell
BazillionQuotes.com
In software, the chain isn't as strong as its weakest link; it's as weak as all the weak links multiplied together.
~ Steve McConnell
BazillionQuotes.com
The most challenging part of programming is conceptualizing the problem, and many errors in programming are conceptual errors. Because
~ Steve McConnell
BazillionQuotes.com
In the case of natural languages, the linguists Sapir and Whorf hypothesize a relationship between the expressive power of a language and the ability to think certain thoughts. The Sapir-Whorf hypothesis says that your ability to think a thought depends on knowing words capable of expressing the thought. If you don't know the words, you can't express the thought and
~ Steve McConnell
BazillionQuotes.com
The words available in a programming language for expressing your programming thoughts certainly determine how you express your thoughts and might even determine what thoughts you can express.
~ Steve McConnell
BazillionQuotes.com
Because it's a poor tradeoff to add complexity for dubious performance gains, a good approach to deep vs. shallow copies is to prefer deep copies until proven otherwise.
~ Steve McConnell
BazillionQuotes.com
One symptom that you have bogged down in complexity overload is when you find yourself doggedly applying a method that is clearly irrelevant, at least to any outside observer. It is like the mechanically inept person whose car breaks down—so he puts water in the battery and empties the ashtrays. — P. J. Plauger
~ Steve McConnell
BazillionQuotes.com
At the software-architecture level, the complexity of a problem is reduced by dividing the system into subsystems. Humans have an easier time comprehending several simple pieces of information than one complicated piece.
~ Steve McConnell
BazillionQuotes.com
The more independent the subsystems are, the more you make it safe to focus on one bit of complexity at a time. Carefully defined objects separate concerns so that you can focus on one thing at a time. Packages provide the same benefit at a higher level of aggregation.
~ Steve McConnell
BazillionQuotes.com
Another good reason to create a class is to model an abstract object—an object that isn't a concrete, real-world object but that provides an abstraction of other concrete objects. A good example is the classic Shape object. Circle and Square really exist, but Shape is an abstraction of other specific shapes.
~ Steve McConnell
BazillionQuotes.com
Levels of Design Design is needed at several different levels of detail in a software system. Some design techniques apply at all levels, and some apply at only one or two. Figure 5-2 illustrates the levels. Figure 5-2. The levels of design in a program. The system (1) is first organized into subsystems (2). The subsystems are further divided into classes (3), and the classes are
~ Steve McConnell
BazillionQuotes.com
Streamline parameter passing. If you're passing a parameter among several routines, that might indicate a need to factor those routines into a class that share the parameter as object data. Streamlining parameter passing isn't a goal, per se, but passing lots of data around suggests that a different class organization might work better.
~ Steve McConnell
BazillionQuotes.com
it's better to strive for a good solution and avoid disaster rather than trying to find the best solution
~ Steve McConnell
BazillionQuotes.com
Encapsulation says that, not only are you allowed to take a simpler view of a complex concept, you are not allowed to look at any of the details of the complex concept. What you see is what you get—it's all you get!
~ Steve McConnell
BazillionQuotes.com
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 in a new project. This approach helps prevent gold-plating—creation of functionality that isn't required and that unnecessarily adds complexity.
~ Steve McConnell
BazillionQuotes.com
Here's a summary list of the valid reasons to create a class: Model real-world objects Model abstract objects Reduce complexity Isolate complexity Hide implementation details Limit effects of changes Hide global data Streamline parameter passing Make central points of control Facilitate reusable code Plan for a family of programs Package related operations Accomplish a specific refactoring
~ Steve McConnell
BazillionQuotes.com
Keep Your Design Modular Modularity's goal is to make each routine or class like a black box: You know what goes in, and you know what comes out, but you don't know what happens inside.
~ Steve McConnell
BazillionQuotes.com
Additional Resources on Data Types These books are good sources of information about data types: Cormen, H. Thomas, Charles E. Leiserson, Ronald L. Rivest. Introduction to Algorithms. New York, NY: McGraw Hill. 1990. Sedgewick, Robert. Algorithms in C++, Parts I-IV, 3d ed. Boston, MA: Addison-Wesley, 1998. Sedgewick, Robert. Algorithms in C++, Part V, 3d ed. Boston, MA: Addison-Wesley, 2002.
~ Steve McConnell
BazillionQuotes.com
Containment is the simple idea that a class contains a primitive data element or object. A lot more is written about inheritance than about containment, but that's because inheritance is more tricky and error-prone, not because it's better. Containment is the work-horse technique in object-oriented programming.
~ Steve McConnell
BazillionQuotes.com
developers' estimates tend to have an optimism factor of 20 to 30 percent
~ Steve McConnell
BazillionQuotes.com
Even if you do a few things right, such as making high use of modern programming practices, you might still make a mistake that nullifies your productivity gains.
~ Steve McConnell
BazillionQuotes.com
