A Philosophy of Software Design
Rate it:
Read between April 23, 2019 - January 2, 2023
9%
Flag icon
Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.
9%
Flag icon
People often use the word “complex” to describe large systems with sophisticated features, but if such a system is easy to work on, then, for the purposes of this book, it is not complex.
10%
Flag icon
Isolating complexity in a place where it will never be seen is almost as good as eliminating the complexity entirely.
10%
Flag icon
Complexity is more apparent to readers than writers. If you write a piece of code and it seems simple to you, but other people think it is complex, then it is complex.
10%
Flag icon
extremely difficult to figure out what those lines were. Sometimes an approach that requires more lines of code is actually simpler, because it reduces cognitive load.
12%
Flag icon
In order to slow the growth of complexity, you must adopt a “zero tolerance” philosophy, as discussed in Chapter 3
15%
Flag icon
The most effective approach is one where every engineer makes continuous small investments in good design.
16%
Flag icon
The best modules are those whose interfaces are much simpler than their implementations.
16%
Flag icon
The informal aspects of an interface can only be described using comments, and the programming language cannot ensure that the description is complete or accurate1. For most interfaces the informal aspects are larger and more complex than the formal aspects.
21%
Flag icon
Back-door leakage like this is more pernicious than leakage through an interface, because it isn’t obvious.