软件预构艺术(影印版)
软件预构艺术(影印版)
Ken Pugh
出版时间:2006年06月
页数:220
利用经验累积而得的洞察力开发新的解决方案被称为预构。透过重构而获得的专业知识也属于这类经验,而预构的词源即重构。重构是修改程序或软件系统内部结构的实践,以此在保留其现有行为的基础上改良设计。重构的原因有多种:方便后期增加功能、提高可维护性、提升性能。
本书作者是经验老道的软件开发人员。书中,作者运用他个人和其他众多开发人员的丰富经验,展示由其推衍而得的各项实践方针。这些方针把优秀的开发人员在设计时隐而未显的考虑细节如实地呈现出来。许多方针都围绕着极致抽象化、极致隔离以及极致可读性这几个概念。在假想的软件项目和实际项目的介绍中,作者把实践方针呈现在读者面前。其中几条于稍后列出。
把作者的方针应用到你的软件项目,有助于写出可读性、可维护性更棒的程序。这些方针可以协助你前期决策,以减少后期重构的工作量。在这样的前提下,你可以预测未来,减少修改。简言之,就是程序预构会使你更有效率。
·要抽象,就彻底抽象
·整合小块要比分拆大块容易
·做好小差事,就能常受重用
·全局计划,局部开发
·让你的程序能够沟通
·最容易调试的程序是还没写的程序
·使用客户的语言
·不要让冷气进来
·绝不沉默
·不要加速,直到你知道要去哪儿
Ken Pugh 是Puge-Killen 协会主席之一。Ken担任顾问、从事教育培训、担任教师以及出庭提供证词,涉足的科技领域有面向对象设计、Linux/Unix 、网络以及系统开发实践。他参与过的项目包括山羊血清流程控制、担保抵押处理软件以及摄影分级。Ken 时常在全国会议和区域会议发表演讲,从伦敦到悉尼都有他的客户。不工作时,他喜欢滑雪、冲浪、骑自行车以及到阿帕拉契山径徒步旅行。
  1. PREFACE
  2. 1 INTRODUCTION TO PREFACTORING
  3. What Is Prefactoring?
  4. The Three Extremes
  5. The Guidelines Explored
  6. The Context for This Book
  7. 2 THE SYSTEM IN SO MANY WORDS
  8. Meet Sam
  9. Reinvention Avoidance
  10. What’s in a Name?
  11. Splitters Versus Lumpers
  12. Clumping
  13. Abstracting
  14. Prototypes Are Worth a Thousand Words
  15. 3 GENERAL DEVELOPMENT ISSUES
  16. Start with the Big Picture
  17. Interface Contracts
  18. Validation
  19. Code Communicates
  20. Consistency Is Simplicity
  21. A Prefactoring Attitude
  22. Don’t Repeat Yourself
  23. Documentation of Assumptions and Decisions
  24. Dealing with Deviations and Errors
  25. Speeding
  26. The Spreadsheet Conundrum
  27. Tools Are Tools—Use Them Wisely
  28. 4 GETTING THE BIG PICTURE
  29. The Rest of the Story
  30. Process
  31. The Initial Design
  32. Global Planning, Local Designing
  33. Testing Functionality
  34. Testing Quality
  35. Security
  36. 5 GOT CLASS?
  37. Categories and Classes
  38. Declaration Versus Execution
  39. Appropriate Inheritance
  40. Communicate with Text
  41. More Than One
  42. 6 A FEW WORDS ON CLASSES
  43. Honor the Class Maxims
  44. Three Laws of Objects
  45. Need Determines Class
  46. Polymorphism
  47. One Little Job
  48. Policy Versus Implementation
  49. Extreme Naming
  50. Overloading Functions
  51. 7 GETTING THERE
  52. Where We Are
  53. Separating Concerns
  54. Migrating to the New System
  55. 8 THE FIRST RELEASE
  56. The Proof Is in the Pudding
  57. Retrospective Time
  58. The System as It Stands Now
  59. Operations Interface
  60. Abstract Data Types
  61. Configuration
  62. Testing
  63. Dealing with Deviations and Errors
  64. A Little Prefactoring
  65. The First Released Iteration
  66. Sometimes Practice Does Not Match Theory
  67. The Rest of the Classes
  68. 9 ASSOCIATIONS AND STATES
  69. Sam’s New Requirement
  70. Who’s in Charge?
  71. The State of an Object
  72. 10 INTERFACES AND ADAPTATION
  73. The Catalog Search Use Case
  74. Designing the Interface
  75. Interface Development
  76. Interface Testing
  77. Interface Splitting
  78. Something Working
  79. 11 ZIP CODES AND INTERFACES
  80. Adaptation
  81. Pass the Buck
  82. Unwritten Code
  83. Indirection
  84. Logging
  85. Paradigm Mismatch
  86. 12 MORE REPORTS
  87. Fancy Reports
  88. Change Happens
  89. Exports
  90. 13 INVOICES, CREDIT CARDS, AND DISCOUNTS
  91. The Next Step
  92. The Language of the Client
  93. Security and Privacy
  94. 14 SAM IS EXPANDING
  95. The Second Store
  96. A New Development
  97. The Third Store
  98. Goodbye Sam
  99. Generality
  100. 15 A PRINTSERVER EXAMPLE
  101. Introduction
  102. The System
  103. The Message
  104. Testing
  105. Logging
  106. Still More Separation
  107. Epilogue
  108. 16 ANTISPAM EXAMPLE
  109. The Context
  110. Spam Checking
  111. The ReceivingMailServer
  112. ReceivedMailExaminer
  113. The Full Flow
  114. 17 EPILOGUE
  115. A GUIDELINES AND PRINCIPLES
  116. B SOURCE CODE
  117. INDEX
书名:软件预构艺术(影印版)
作者:Ken Pugh
国内出版社:东南大学出版社
出版时间:2006年06月
页数:220
书号:7-5641-0365-5
原版书出版商:O'Reilly Media
Ken Pugh
 
Ken Pugh在软件分析和设计领域有相当广泛的经验。参与过的系统包括山羊血清流程控制、金融分析以及卫星轨道噪音记录等。他之前写过书讨论C和Unix,以前也替《C/C++ Users Journal》写专栏。他在威斯利学院、夏威夷大学以及许多公司教授程序设计课程,也时常在全国会议上发表演说。他担任个人顾问已经超过20年,从伦敦到悉尼都有他的客户。身为专家级证人,他也在民事诉讼和刑事案件中提供证词。
不工作时,他喜欢滑雪、冲浪、骑自行车,还喜欢到阿巴拉契亚山徒步旅行。
KEN PUGH has extensive experience in the area of software analysis and design. He has worked on systems ranging from goat serum process control to financial analysis to noise recording to satellite tracking. His previous books were on C and Unix, and he is a former columnist for the C/C++ Users Journal. He has taught programming courses for Wellesley College and the University of Hawaii, as well as numerous corporate courses, and he frequently presents at national conferences. As an independent consultant for over 20 years, he has served clients from London to Sydney.
As an expert witness, he has provided testi-mony in both civil suits and criminal cases. When not computing, he enjoys snowboarding, windsurfing, biking, and hiking the Appalachian Trail.