学习Kent Beck简单设计四条规则

  1. 运行所有测试
  2. 不可重复
  3. 表达程序员的意图
  4. 尽可能减少方法的数量

首先我们设计开发出来的系统应该是包含测试,只有通过了所有的测试,系统才可以被发布。这就要求我们的测试,是覆盖全面的。全面的测试,必然我们的测试数量是很多的,那么我们在设计程序时,就要做到程序是可测试的,所以说,测试可以引致更好的设计。

不可重复,我们的系统不应该包含大量的重复代码。重复意味着系统的复杂性高,可维护性差,可扩展性差。重复包含代码的重复,逻辑的重复,功能的重复。我们需要在程序开发是,不停的重构,去除重复。

表达程序员的意图,程序代码不是写完之后就会被永久搁置起来,它会在需求有变更,或者进行维护时再次被拎出来,又或者代码功能出现问题时,会被再次改动。我们需要保证在代码再次被阅读时,每个人都能很快的读懂代码。这样的设计,是高效的。

尽可能减少方法的数量,太多层次的调用不利于我们阅读代码。太多的方法,意味着抽象的设计做的不够好。我们应该保证我们的抽象是在我们的智力可以管控的范围内的。在最早期的开发,先辈们使用汇编语言进行开发,当系统的规模日渐增大时,汇编命令的抽象层次上,我们的智力水平去管理一个系统,就产生了挑战性。所以做好抽象,可以使我们更加高效。

这四条设计规则,重要性依次降低,当我们面临矛盾时我们需要去做权衡,目的是怎么高效怎么来。

Kent Beck简单设计四条规则相关推荐

  1. 代码的简单设计五原则

    欢欢:"你看我的代码用了策略模式和状态模式,假如后面客户会有这样的需求,可以无缝扩展,多么健壮!" 清扬一脸狐疑,心中念叨了数遍 :"哼,过度设计!",只见她欲 ...

  2. 【架构基础】简单设计原则

    简单设计来源于极限编程(ExtremeProgramming,简称XP).XP是由KentBeck在1996年提出的,是一种软件工程方法学,是敏捷软件开发中最富有成效的几种方法学之一.XP存在四个核心 ...

  3. web登录界面设计_出色的Web界面设计的7条规则

    web登录界面设计 When you work on a website or on the design of web pages, remember that their success is n ...

  4. [设计原则与模式] 如何理解TDD的三条规则

    cp from  :  https://blog.csdn.net/ibelieve1974/article/details/54948031 如何理解Bob大叔的TDD三条规则? 第一条和第三条讲的 ...

  5. C++正交设计笔记2 简单设计

    通过所有测试(需求) 尽可能消除重复(易重用,易修改性) 尽可能清晰表达(可理解性) 更少代码元素(复杂性,无冗余) 重要程度排序 需求最大 第二 (易修改性 大于 可理解性?) 结论 原文 http ...

  6. Yahoo网站性能优化的34条规则

    摘自:http://blog.chinaunix.net/uid/20714478/cid-74195-list-1.html Yahoo网站性能优化的34条规则 1.尽量减少HTTP请求次数 终端用 ...

  7. 优化网站性能的35条规则

    最新博客站点:欢迎来访 1. 最小化HTTP请求次数 最终用户响应时间的80%用于前端.大部分时间都在下载页面中的所有组件:图像,样式表,脚本,Flash等.减少组件数量反过来减少了呈现页面所需的HT ...

  8. 《超越平凡的平面设计: 版式设计原理与应用》—设计,无需规则

    本节书摘来自异步社区<超越平凡的平面设计: 版式设计原理与应用>一书中的设计,无需规则,作者[美]John McWade,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  9. 总是半途而废?这四条建议让你培养习惯的成功率翻倍

    今天推荐一本书<掌控习惯>,本书的核心思想,是认为习惯分为四个部分,提示.渴求.反应和奖励.在培养习惯时只要遵守的四条简单规则就能成功: (1)让它显而易见: (2)让它有吸引力: (3) ...

  10. Knowledge 3命题逻辑形式推演(resolution归结原理- -- 1条规则)

    目录 一.写在前面 二.resolution归结原理 2.1 什么是resolution归结原理 2.2 怎么将一个任何一个式子改写成CNF合取范式的形式 2.3  利用归结原理和反证法证明      ...

最新文章

  1. 区块链有哪些技术特征
  2. 向sqlce 里插入和取出一个Image
  3. 程序员搞事!动手实战优化自己公司线上系统JVM,结果。。。
  4. RabbitMQ在windows系统安装部署文档
  5. linux 软件装到hone,如何在Linux系统安装Apollo
  6. Twitter Snowflake算法详解
  7. C语言文件操作基本常识
  8. 09-CoreData iOS10.0变化
  9. table选项卡从A页面点击进入B页面指定版块
  10. 项目学生:Spring数据的持久性
  11. python每行输出14个数_python – 计算pandas中每行的一些值的列数
  12. pip国内加载速度慢解决方法
  13. Rstudio调用plot()函数时,出现错误的处理方法
  14. hbuilder怎么做登录界面_新手会计不懂如何报税?一套标准网上报税流程演示,教你怎么纳税申报...
  15. 【带着canvas去流浪(5)】绘制K线图
  16. JavaScript里的函数加或不加括号的区别
  17. chmod 777命令_Linux用户权限管理及用户权限管理命令操作
  18. ROM与RAM混合设计
  19. 不是所有学计算机的都是肖奈,为什么《微微一笑很倾城》中贝微微肖奈学习都很拔尖,却都不考研...
  20. Android Github开源项目大集会 真的什么都有啊

热门文章

  1. css和html实现梦幻西游页面特效
  2. 【B站弹幕游戏开发笔记02】Win10系统下给Python项目导入Protobuf
  3. python 元类理解
  4. 星际迷航中企业号的动力系统_五月四日与您同在:《星球大战》(和《星际迷航》)如何激发现实生活中的技术...
  5. C语言sizeof与strlen详解(附大量笔试题题解过程)
  6. 分享优秀品牌平面广告创意作品的创意密码
  7. Apache开启rewrite重写模块
  8. 数学之美笔录(3):隐含马尔可夫模型(详解)
  9. 《中国人史纲》读书笔记:第六、七章 纪元前八、七世纪
  10. python对京东评论的爬取_python爬取京东评论(三)