• Home
  • Explore

A Philosophy of Software Design - psd.pdf

milkov.tech/assets/psd.pdf

1 Users

1 Comments

29 Highlights

10 Notes

Tags

Top Highlights

  • If you write a piece of code and it seems simple to you, but other people think it is complex, then it is complex

  • The first symptom of complexity is that a seemingly simple change requires code modifications in many different places.

  • APIs with many methods

  • global variables

  • inconsistencies

  • An unknown unknown means that there is something you need to know, but there is no way for you to find out what it is, or even whether there is an issue.

  • ead every line of code in the system

  • lower- level design decisions

  • dependencies and obscurity

  • Your primary goal must be to produce a great design, which also happens to work. This is strategic programming.

  • the benefits from your past investments will save enough time to cover the cost of future investment

  • Good design doesn’t come for free. It has to be something you invest in continually, so that small problems don’t accumulate into big ones.

  • Providing choice is good, but interfaces should be designed to make the common case as simple as possible (see the formula on page 6).

  • If an interface has many features, but most developers only need to be aware of a few of them, the effective complexity of that interface is just the complexity of the commonly used features.

  • One common cause of information leakage is a design style I call temporal decomposition.

  • One common cause of information leakage is a design style I call temporal decomposition.

  • One common cause of information leakage is a design style I call temporal decomposition

  • When designing modules, focus on the knowledge that’s needed to perform each task, not the order in which tasks occur.

  • This example illustrates a general theme in software design: information hiding can often be improved by making a class slightly larger.

  • Thus, it’s important to avoid exposing internal data structures as much as possible

Toughts & Comments

Nima Rezaeian

My guesses: Change amplification is caused by violating DRY, cognitive load is caused by violating good interface design and creating too many dependencies.

Ready to highlight and find good content?

Glasp is a social web highlighter that people can highlight and organize quotes and thoughts from the web, and access other like-minded people’s learning.

AboutPrivacyTerms

© 2023 Glasp Inc. All rights reserved.