图书标签: 软件工程 软件架构 计算机 软件设计 编程 程序设计 架构师 programming
发表于2024-09-26
A Philosophy of Software Design pdf epub mobi txt 电子书 下载 2024
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
John Ousterhout is the Bosack Lerner Professor of Computer Science at Stanford University. His current research focuses on new software stack layers to allow datacenter applications to take advantage of communication and storage technologies with microsecond-scale latencies. Ousterhout's prior positions include 14 years in industry, where he founded two companies (Scriptics and Electric Cloud), preceded by 14 years as Professor of Computer Science at U.C. Berkeley. He is the creator of the Tcl scripting language and is also well known for his work in distributed operating systems and storage systems. Ousterhout received a BS degree in Physics from Yale University and a PhD in Computer Science from Carnegie Mellon University. He is a member of the National Academy of Engineering and has received numerous awards, including the ACM Software System Award, the ACM Grace Murray Hopper Award, the National Science Foundation Presidential Young Investigator Award, and the U.C. Berkeley Distinguished Teaching Award.
这是一本很适合编程入门者的软件工程最佳实践方面的书
评分写好代码的最佳标准就是降低复杂性。解决复杂性的时候需要引入一些投资理念,很多看起来提高复杂性的方法长远来看反而降低了复杂性。比如作者推崇合理的代码注释,甚至先写注释再写代码,这样可以更合理地设计整个项目的了逻辑,降低总体风险。
评分重点看了前面10章,特别是关于软件复杂性方面。感受比较深的几点是: 1.对抗复杂性的两个方法:代码简洁和封装。 keep these in mind when programming. 2. 尽量战略性编程,而不是战术性编程 3. module设计要有深度, 接口少而简单。less is more。 让复杂性下沉 4. 尽量减少module之间的依赖关系 5. 不同层,不同抽象。 Design it twice 6. 注释应该包含设计者不能在代码(接口)中表达出来的信息。代码和注释是写给别人看的 7. Agile推崇的渐进式开发的应该是抽象,而不是功能
评分目录层级可以再深一点,以体现不同章节之间的联系。 非常好的书,值得多读两次
评分神作啊。简直字字珠玑。
1. complexity is incremental:you have to sweat the small stuff 2. working code isn’t enough 3. make continual small investments to improve system design 4. interfaces should be designed to make the most common usage as soon as possible 5.module should be d...
评分1. complexity is incremental:you have to sweat the small stuff 2. working code isn’t enough 3. make continual small investments to improve system design 4. interfaces should be designed to make the most common usage as soon as possible 5.module should be d...
评分John Ousterhout, the author of this book who has built a number of influential systems (Tcl / Tk, Raft, RAMcloud, etc), has ever gave an impressive talk at Google which covers the same theme. In that talk, he asked the audience, "If you had to pick one idea...
评分1. complexity is incremental:you have to sweat the small stuff 2. working code isn’t enough 3. make continual small investments to improve system design 4. interfaces should be designed to make the most common usage as soon as possible 5.module should be d...
评分A Philosophy of Software Design pdf epub mobi txt 电子书 下载 2024