Continuous Design

https://www.martinfowler.com/ieeeSoftware/continuousDesign.pdf

T
he
rising popularity of refactoring, tools
such as JUnit, and agile methodologies
such as Extreme Programming (XP) has
brought a new style of design into view.
Continuous design
is the process of us-
ing refactoring to continuously improve
a program’s design. Initially a skeptic, I’ve been
experimenting with continuous design for four

years, and it’s changed the way I program

Design Goals in Continuous Design
Continuous design makes change easy by focusing on these design goals:
DRY (Don’t Repeat Yourself):
There’s little duplication.
Explicit:
Code clearly states its purpose, usually without needing comments.
Simple:
Specific approaches are preferred over generic ones. Design pat-
terns support features, not extensibility.
Cohesive:
Related code and concepts are grouped together.
Decoupled:
Unrelated code and concepts can be changed independently.
Isolated:
Third-party code is isolated behind a single interface.
Present-day:
The design doesn’t try to predict future features.
No hooks:
Interfaces, factory methods, events, and other extensibility “hooks”

are left out unless they meet a current need

Cohesive

内聚 -- 相关的代码和逻辑,放在一起。 不要离散存放。

Isolated & Decoupled

去耦合 -- 将无关和不必要的粘连,切除掉。目标为更加内聚。

隔离 -- 将不同内聚的模块, 切分清楚, 将模块之间的接口描述清楚。

Continuous Design的更多相关文章

  1. DDD:Strategic Domain Driven Design with Context Mapping

    Introduction Many approaches to object oriented modeling tend not to scale well when the application ...

  2. Domain Driven Design and Development In Practice--转载

    原文地址:http://www.infoq.com/articles/ddd-in-practice Background Domain Driven Design (DDD) is about ma ...

  3. Go as continuous delivery tool for .NET

    http://simon-says-architecture.com/2014/02/28/go-as-continuous-delivery-tool-for-net/ Following my p ...

  4. Fitting Bayesian Linear Mixed Models for continuous and binary data using Stan: A quick tutorial

    I want to give a quick tutorial on fitting Linear Mixed Models (hierarchical models) with a full var ...

  5. Android设计和开发系列第二篇:Action Bar(Design)

    Action Bar The action bar is a dedicated piece of real estate at the top of each screen that is gene ...

  6. 论文阅读 | Formalizing Visualization Design Knowledge as Constraints: Actionable and Extensible Models in Draco

    1. Introduction 程序员编写的可视化图表与专家眼中的设计标准总存在差距.我们无法每次都向可视化专家咨询设计上的意见,所以我们需求将设计标准,研究成果应用于自动化设计工具的正式框架,这些工 ...

  7. Comparing Two High-Performance I/O Design Patterns--reference

    by Alexander Libman with Vladimir GilbourdNovember 25, 2005 Summary This article investigates and co ...

  8. TimescaleDB1.3 的新特性——Continuous aggregates: faster queries with automatically maintained materialized views

    One characteristic of time-series data workloads is that the dataset will grow very quickly. Without ...

  9. behavior planning——15.cost function design weightTweaking

    Designing cost functions is difficult and getting them all to cooperate to produce reasionable vehic ...

随机推荐

  1. 每天一个linux命令(1):wc命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  2. 软硬连接ln

    软硬连接Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引 ...

  3. list根据某个字段去重

    方法一:使用Set List<User> newList = new ArrayList<User>(); Set<String> set = new HashSe ...

  4. 洛谷P4175 网络管理

    题意:链上带修第k大. 这毒瘤题...别看题意只有7个字,能把我吊打死... 介绍其中两种做法好了.其实思想上是一样的. 对于每一个点,建立权值线段树,维护它到根路径上的所有权值. 一条路径上的点集就 ...

  5. A1132. Cut Integer

    Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long int ...

  6. gradle的安装配置成功标志

    gradle主要位于AndroidStudio中 看我的目录 在环境变量里添加用户变量 GRADLE_HOME 然后在环境变量 path 中增加 %GRADLE_HOME%\bin;,如图所示 测试配 ...

  7. day02作业

    1.判断下列逻辑语句的True,False. 1),1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 tru ...

  8. c#两个listbox怎么把内容添加到另外个listbox

    https://bbs.csdn.net/topics/392156324?page=1  public partial class Form1 : Form     {         public ...

  9. 高级组件——弹出式菜单JPopupMenu

    弹出式菜单JPopupMenu,需要用到鼠标事件.MouseListener必须要实现所有接口,MouseAdapter是类,只写你关心的方法,即MouseAdapter实现了MouseListene ...

  10. node.js小案例_留言板

    一.前言 通过这个案例复习: 1.node.js中模板引擎的使用 2.node.js中的页面跳转和重定向 二.主要内容 1.案列演示:  2.案列源码:https://github.com/45612 ...