APhilosophyofSoftwareDesign - (EPUB全文下载)
文件大小:0.76 mb。
文件格式:epub 格式。
书籍内容:
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
9
Better Together Or Better Apart?
9.1
Bring together if information is shared
9.2
Bring together if it will simplify the interface
9.3
Bring together to eliminate duplication
9.4
Separate general-purpose and special-purpose code
9.5
Example: insertion cursor and selection
9.6
Example: separate class for logging
9.7
Example: editor undo mechanism
9.8
Splitting and joining methods
9.9
Conclusion
10
Define Errors Out Of Existence
10.1
Why exceptions add complexity ............
书籍插图:
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » APhilosophyofSoftwareDesign - (EPUB全文下载)