zoukankan      html  css  js  c++  java
  • 敏捷技能修炼之小舵板之一:意图导向编程

    前言

    最近想学习敏捷开发,在看一本书,叫《敏捷技能修炼-敏捷软件开发与设计的最佳实践》。正如书中所说,两个同等经验的程序员,在效率和质量上可能会有10倍的差距。随着写的代码越来越多,我也有这种体会,我们写的代码不能只是功能的实现,还应该注重代码的质量,如可读性、易理解、易修改等。

    书中第一部分介绍了"小舵板"理论,分别是:

    • 意图导向编程
    • 分离构造和使用
    • 代码未动,测试先行

    意图导向编程

    意图导向编程也称目的导向编程,在使用意图导向编程时,我们把一个问题分解为一系列功能性步骤,并假定这些功能步骤已经实现,我们只需把把各个函数组织在一起即可解决这一问题。在组织好整个功能后,我们在分别实现各个方法函数。举书中的一个例子,假设我们需要创建一个交易业务的服务程序,具体需求如下:

    1. 交易信息开始于一串标准ASCII字符串。
    2. 这个信息字符串必须转换成一个字符串的数组,数组存放的此次交易的领域语言中所包含的词汇元素(token)。
    3. 每一个词汇必须标准化。
    4. 包含超过150个词汇元素的交易,应该采用不同于小型交易的方式(不同的算法)来提交,以提高效率。
    5. 如果提交成功,API返回"true";失败,则返回"false"。

    这里没有涉及具体细节,并假定具体算法已实现。

    需求中的每一点都代表一个功能性步骤,使用意图导向编程,我们假定每一个功能步骤已经实现,我们可以写出下面的代码

    public class Transaction
    {
    	public Boolean commit(String command)
    	{
    		Boolean result = true;
    		String[] tokens = tokenize(command);
    		normalizeTokens(tokens);
    		if (isALargeTransaction(tokens))
    		{
    			result = processLargeTransaction(tokens);
    		}
    		else
    		{
    			result = processSmallTransaction(tokens);
    		}
    		return result;
    	}
    }
    

    commit()方法是我们定义的应用程序接口(API),它是公用方法,该方法只是一系列的方法调用,实现一系列意图。

    接下来,我们就可以分别实现各个方法,如果是团队开发,还可根据团队中的特点分配任务。

    使用意图导向编程的优点

    如果遵循意图导向编程的方式,那么代码将会:

    • 更加内聚(职责单一)。
    • 更加可读和清晰。
    • 更易于调试。
    • 更易于重构和优化,所以只做最少的设计,满足当前需求。
    • 更易于单元测试。

    同时,从这些优点中还会延伸出其他优点:代码更易于修改个扩展。其他还有:

    • 模式更易应用到代码。
    • 创建的方法可以容易地从一个类移动到另一个类。
    • 代码更易于维护。

    更重要的是,遵循意图导向编程的方式并不用花费额外的精力。

    关于代码注释

    关于代码注释众说纷纭,《代码大全》一书中主张代码要有自说明性,因为代码才是最新的,而注释可能已经过时(修改代码但是未修改注释),我比较赞同这个观点。意图编程就带来了一个额外的好处,代码基本上就是自说明的,看看上面这段代码,几乎不用再注释它了,代码本身就充当了注释的作用。

    结语

    以上就是关于意图导向编程的介绍,后续还会继续把其他"小舵板"更新。

    原文链接: http://zh.5long.me/2014/Agile-Development-Programming-by-Intention/
    版权声明:自由转载-非商用-保持署名 | Creative Commons BY-NC 4.0

  • 相关阅读:
    python uuid
    linux 修改时区
    Nginx 缓存命中率
    MongoDB oplog 详解
    MongoDB 复本集搭建
    复制集简介
    解决Python2.7的UnicodeEncodeError: 'ascii' codec can't encode异常错误
    MongoDB 介绍
    python virtualenv
    Docker Compose 模板文件 V2
  • 原文地址:https://www.cnblogs.com/5long/p/4745310.html
Copyright © 2011-2022 走看看