没有合适的资源?快使用搜索试试~ 我知道了~
首页A.Philosophy.of.Software.Design.2018.4 (1).pdf
This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process, and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly
资源详情
资源评论
资源推荐


A Philosophy of Software Design
John Ousterhout
Stanford University

A Philosophy of Software Design
by John Ousterhout
Copyright © 2018 John K. Ousterhout.
All rights reserved. No part of this book may be reproduced, in any form or by any means, without
permission in writing from the author.
Published by Yaknyam Press, Palo Alto, CA.
Cover design by Pete Nguyen and Shirin Oreizy (www.hellonextstep.com).
Printing History:
April 2018: First Edition (v1.0)
November 2018: First Edition (v1.01)
ISBN 978-1-7321022-0-0
Digital book(s) (epub and mobi) produced by Booknook.biz.

Contents
Preface
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 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
剩余200页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0