Kent Beck提出的简单设计原则,内容为:

1 通过所有测试(Passes its tests)

2 尽可能消除重复 (Minimizes duplication)

3 尽可能清晰表达 (Maximizes clarity)

4 更少代码元素 (Has fewer elements)

以上四个原则的重要程度依次降低。

通过所有测试原则意味着我们开发的功能满足客户的需求,这是简单设计的底线原则。该原则同时隐含地告知与客户或领域专家(需求分析师)充分沟通的重要性。

尽可能消除重复原则是对代码质量提出的要求,并通过测试驱动开发的重构环节来完成。注意此原则提到的是Minimizes(尽可能消除),而非No duplication(无重复),因为追求极致的重用存在设计与编码的代价。

尽可能清晰表达原则要求代码要简洁而清晰地传递领域知识,在领域驱动设计的语境下,就是要遵循统一语言,提高代码的可读性,满足业务人员与开发人员的交流目的。针对核心领域,甚至可以考虑引入领域特定语言(Domain Specific Language,DSL)来表现领域逻辑。

在满足这三个原则的基础上,更少代码元素原则告诫我们遏制过度设计的贪心,做到设计的恰如其分,即在满足客户需求的基础上,只要代码已经做到了最少重复与清晰表达,就不要再进一步拆分或提取类、方法和变量。

这四个原则是依次递进的,功能正确,减少重复,代码可读是简单设计的根本要求。一旦满足这些要求,就不能创建更多的代码元素去迎合未来可能并不存在的变化,避免过度设计。


http://www.taodudu.cc/news/show-4058100.html

相关文章:

  • Kent Beck 教你编程模式与代码重构
  • Kent Beck:敏捷和极限编程是关于Be Yourself
  • kent beck_肯特·沙基(Kent Sharkey)身着“ heezy fo'sheezy babay”!
  • 【连通域检测】基于形态学处理的连通区域检测matlab仿真
  • C++-OpenCV(1)-连通区域
  • 10---OpenCV:图像进阶操作之连通区域分析
  • matlab连通区域统计,MATLAB bwlabel函数 统计连通区域
  • matlab连通区边界_matlab函数_连通区域
  • 多变量微积分笔记18——连通区域
  • 图像处理中最大连通区域的求解
  • 算法题_寻找最大连通区域
  • matlab 二值图像连通区域标记法,一种二值图像连通区域标记的简单快速算法_葛春平...
  • Opencv求取连通区域重心
  • 连通区域
  • 区域增长法和连通区域标记法【小记】
  • VTK:图形基本操作进阶——连通区域分析
  • matlab标记最大的连通区域,Matlab得到二值图像中最大连通区域
  • 连通区域计算
  • 图像分割-连通区域分析
  • python连通区域计算长度_连通区域算法小结
  • python 连通区域_opencv 查找连通区域 最大面积实例
  • 二值图像连通区域标记matlab,二值图像快速连通区域计算方法与流程
  • 连通区域分析法
  • OpenCV_连通区域分析(Connected Component Analysis-Labeling)
  • 图像处理:连通区域算法
  • 获取远程资源提示msxml3.dll指定资源下载失败
  • .NET启动时,出现无法加载MSXML3.dll
  • c++读xml文件 MSXML
  • MsXml创建和解析XML示例
  • msxml3.dll 错误 '800c0008'

【架构设计】简单设计原则(Kent Beck)相关推荐

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

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

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

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

  3. 软件架构设计_架构师内功心法,软件架构设计的七大原则精选案例

    一.软件架构设计的七大原则简介 1.1 开闭原则(Open-Closed Principle,OCP) 开闭原则是一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.所谓的开闭也是对扩展和修改两个 ...

  4. 软件系统架构设计的六大原则

    软件系统架构设计的六大原则 1.单一职责原则(SRP) 2.开放封闭原则(OCP) 3.里氏替换原则(LSP) 4.最少知识原则(LKP) 5.接口隔离原则(ISP) 6.依赖倒置原则(DIP) 1. ...

  5. AHB-SRAM简单设计之架构图解

    前言 还是慢慢来,比较快!在接触这个小项目时,就有种想法,吃透项目! 参考文章:基于AHB总线的sram控制器设计.AHB-SRAMC项目(结构图,核心代码.Testbench架构) 问:对于小白,该 ...

  6. [架构设计]-- 数据库设计原则

    转自:http://blog.sina.com.cn/s/blog_735fb3b40100svet.html 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库 ...

  7. 演化架构与紧急设计: 组合方法和 SLAP

    如何在陈旧的代码库中找出隐藏的设计?本文讨论两种对于代码结构很重要的模式:组合方法 和单一抽象层.对代码应用这些原则有助于找到以前隐藏的可重用资产,有助于把现有的代码抽象为成熟的框架. 在这个 系列 ...

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

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

  9. 闲谈简单设计(KISS)疑惑

    忙碌了一年了项目又到了交付了,虽然项目能成功上线(因为还有维护支持的团队).但是个人从技术上看,这是一个不那么成功的项目,因为后期艰难的修复bug,添加feature.这与简单设计有什么关系呢?在某模 ...

  10. 一文详解微服务架构的数据设计

    微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面. 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮助大家在构建微服务架构 ...

最新文章

  1. GridView 类型公开的所有成员(公共属性、公共方法、私有属性.......)
  2. 我在思考的时候神告诉我的(大学里的爱恋)
  3. java人力资源管理系统设计_人力资源管理系统——《Java Web程序设计》课程设计...
  4. Java代码风格:最终决定
  5. 【Python CheckiO 题解】Largest Rectangle in a Histogram
  6. 指数随机变量 泊松过程跳_如何深刻的理解随机变量
  7. Hive案例:统计单词个数
  8. jar包上传到jcenter
  9. 基于Ruby的Watir-WebDriver自动化测试框架
  10. 软件设计原则(一) 单一职责原则
  11. php提取pdf首页图片,pdf图片怎么提取
  12. Java实现鉴权失败达到一定次数锁定IP并释放到期IP
  13. 登录邮箱用哪个好,好用的登录邮箱推荐
  14. 金融服务公司域名备案
  15. atm机用visio画工作流程图_VISIO画职能流程图规范性培训文档(内附模版).ppt
  16. 13.es slop参数实现近似匹配以及原理剖析和相关实验
  17. [20151018]SCZ训练
  18. 连接远程电脑主机,pycharm远程调试代码方法
  19. 拼多多数据分析笔试题(附代码答案)
  20. html mako

热门文章

  1. npm与package.json详解
  2. 【转】Unity5 新AssetBundle打包方式 BuildPipeline.BuildAssetBundles
  3. SpringBoot生命周期
  4. 魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机
  5. 为何淘宝上的假货打不完?
  6. dpi shell命令 安卓_夏普手机免root,安装区域中文及隐藏虚拟按键和调整dpi的方法...
  7. python图表导入word_使用python matplotlib 画图导入到word中如何保证分辨率
  8. html5自助建站源码,疯狂原始人
  9. 石家庄地铁路线安排网站的设计
  10. 魔兽世界n 服服务器维护时段,魔兽世界N服人员撤离新N服 E服即将面临关闭