A Philosophy of Software Design

书名:A Philosophy of Software Design
作者:JohnOusterhout
译者:
ISBN:9781732102200
出版社:YaknyamPress
出版时间:2018-4-6
格式:epub/mobi/azw3/pdf
页数:190
豆瓣评分: 9.2

书籍简介:

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.

书友短评:

@ 热情花招 A clean, simple, and obvious design is a beautiful thing @ larrylv 同组的斯坦福小伙大学时上过作者的课,强烈推荐了本书。书虽薄了些,但收获不小。 @ 天海太阳 微观设计层面讲得很全面,define errors out of existence 引人深思。宏观架构层面需要参考 Design Data-Intensive Applications。 @ milanow 神作啊。简直字字珠玑。 @ Maooyer Working Code isn’t enough @ Leo Lin 断断续续花了快两个月终于读完第一遍,观点鲜明,可操作性很强,打算过段时间再重读一遍,加深理解。 @ 清歌 这是一本关于如何在软件设计中控制复杂度的哲学的书。作者给了几个解决思路,创建深度抽象的接口;通过重新定义接口行为减少错误处理;好的注释和文档补充接口签名未覆盖的部分。因为主题和边幅所限,作者未详细提到单元测试,但是个人觉得,使代码更方便进行单元测试这一设计要素,在代码实践中也需要考虑。 @ Fornever 言简意赅,字里行间甚至透出些许不耐烦。 @ Tinc0 有一说一,对于高级工程师或者架构师来说,他们自己的经验可能比书中的细节要求更实用,但是对于一线生产者来说,这本书真的能让人看得更远。

书籍目录

  • A Philosophy of Software DesignPreface- The most fundamental problem in computer science is problem decomposition: how to take a complex problem and divide it up into pieces that can be solved independently.1 Introduction### 1.1 How to use this book- The best way to use this book is in conjunction with code reviews.- One of the best ways to improve your design skills is to learn to recognize red flags: signs that a piece of code is probably more complicated than it needs to be.- When applying the ideas from this book, it’s important to use moderation and discretion.- This means that the greatest limitation in writing software is our ability to understand the systems we are creating.- There are two general approaches to fighting complexity, both of which will be discussed in this bo…
    —— 引自第1页
  • The best way to eliminate exception handling complexity is to define your APIs so that there are no exceptions to handle: define errors out of existence. This may seem sacrilegious, but it is very effective in practice. Consider the Tcl unset command discussed above. Rather than throwing an error when unset is asked to delete an unknown variable, it should have simply returned without doing anything. I should have changed the definition of unset slightly: rather than deleting a variable, unset should ensure that a variable no longer exists. With the first definition, unset can’t do its job if the variable doesn’t exist, so generating an exception makes sense. With the second definition, it is perfectly natural for unset to be invoked with the name of a variable that doesn’t exist. In this …
    —— 引自第88页
  • 添加微信公众号:好书天下获取

    添加微信公众号:“好书天下”获取书籍好书天下 » A Philosophy of Software Design
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!

     

    添加微信公众号:“好书天下”获取书籍

    添加微信公众号:“好书天下”获取书籍添加微信公众号:“好书天下”获取书籍