A Philosophy of Software Design 2nd Edition by John K Ousterhout – Ebook PDF Instant Download/Delivery: 173210221X, 9781732102217
Full download A Philosophy of Software Design 2nd Edition after payment

Product details:
ISBN 10: 173210221X
ISBN 13: 9781732102217
Author: John K Ousterhout
A Philosophy of Software Design 2nd Table of contents:
-
1. Introduction
-
1.1 How to use this book
-
-
2. The Nature of Complexity
-
2.1 Complexity defined
-
2.2 Symptoms of complexity
-
2.3 Causes of complexity
-
2.4 Complexity is incremental
-
2.5 Conclusion
-
-
3. Working Code Isn’t Enough
-
3.1 Tactical programming
-
3.2 Strategic programming
-
3.3 How much to invest?
-
3.4 Startups and investment
-
3.5 Conclusion
-
-
4. Modules Should Be Deep
-
4.1 Modular design
-
4.2 What’s in an interface?
-
4.3 Abstractions
-
4.4 Deep modules
-
4.5 Shallow modules
-
4.6 Classitis
-
4.7 Examples: Java and Unix I/O
-
4.8 Conclusion
-
-
5. Information Hiding (and Leakage)
-
5.1 Information hiding
-
5.2 Information leakage
-
5.3 Temporal decomposition
-
5.4 Example: HTTP server
-
5.5 Example: too many classes
-
5.6 Example: HTTP parameter handling
-
5.7 Example: defaults in HTTP responses
-
5.8 Information hiding within a class
-
5.9 Taking it too far
-
5.10 Conclusion
-
-
6. General-Purpose Modules are Deeper
-
6.1 Make classes somewhat general-purpose
-
6.2 Example: storing text for an editor
-
6.3 A more general-purpose API
-
6.4 Generality leads to better information hiding
-
6.5 Questions to ask yourself
-
6.6 Push specialization upwards (and downwards!)
-
6.7 Example: editor undo mechanism
-
6.8 Eliminate special cases in code
-
6.9 Conclusion
-
-
7. Different Layer, Different Abstraction
-
7.1 Pass-through methods
-
7.2 When is interface duplication OK?
-
7.3 Decorators
-
7.4 Interface versus implementation
-
7.5 Pass-through variables
-
7.6 Conclusion
-
-
8. Pull Complexity Downwards
-
8.1 Example: editor text class
-
8.2 Example: configuration parameters
-
8.3 Taking it too far
-
8.4 Conclusion
-
-
9. Avoiding the “Tactical Tornado”
-
9.1 The tactical tornado
-
9.2 The cost of tactical programming
-
9.3 Strategies to avoid tactical programming
-
9.4 Conclusion
-
-
10. Designing for Change
-
10.1 The need for change
-
10.2 Designing for flexibility
-
10.3 Conclusion
-
-
11. Design It Twice
-
11.1 The first design
-
11.2 The second design
-
11.3 Conclusion
-
-
12. Choosing Names
-
12.1 The importance of names
-
12.2 Guidelines for naming
-
12.3 Conclusion
-
-
13. Comments and Documentation
-
13.1 The role of comments
-
13.2 Writing good comments
-
13.3 Conclusion
-
-
14. Unit Testing
-
14.1 The importance of testing
-
14.2 Writing effective tests
-
14.3 Conclusion
-
-
15. Design Patterns
-
15.1 What are design patterns?
-
15.2 Using design patterns effectively
-
15.3 Conclusion
-
-
16. Agile Development
-
16.1 The principles of agile development
-
16.2 Agile practices
-
16.3 Conclusion
-
-
17. Conclusion
-
17.1 Summary of key points
-
17.2 Final thoughts
-
People also search for A Philosophy of Software Design 2nd:
a philosophy of software design
a philosophy of software design pdf
ousterhout a philosophy of software design
a philosophy of software design github
a philosophy of software design epub
Tags: John K Ousterhout, Philosophy, Software


