敏捷技能修炼--------意图导向编程


               意图导向编程即自顶向下编程,其思想为:先假设当前这个对象中,已经有了一个理想方法,它可以准确无误的完成你想做的事,而不是直接盯着每一点要求来编写代码。编写前先问问自己:“假如这个理想方法已经存在,它应该具有什么样的输入参数,返回什么值?还有,什么样的命名最符合他的意义”.

              以一实例要求:

                    1、交易信息开始于一串标准ASCII字符串;


                   2、这个信息字符串必须转换成一个字符串数组,数组存放的值是此次交易用到的领域语言中所包含的吃会元素;


                  3、每个词汇必须标准化(第一个大写,其余小写,空格和非字母数字的符号都要删除);


                 4、包含超过150个词汇元素的交易,应该采用不同于小型交易的方式(不同的算法)来提交,以提高效率;


                 5、如果提交成功,API方法应该返回“true”,失败返回“false”;



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

  }
 }   


           其中commit()方法为我们为这个对象提供的应用程序API;里面的方法都还没有实现,编译后,编译器会提示错误,找不到那些辅助方法,接下来就是要创建内部相应的方法。 这种编码方式可以说很常见,一般我在写程序的时候就是这样思考程序的框架的,但并没有具体的按照该方法,仅仅只是想想而已,然后就去写相应的“辅助方法”,我这样的编码方式往往造成很多问题,一、对程序的大体框架仅仅只是了解,并不是很明确,设计中常常因为考虑不周全而需要改变;二、对“辅助方法”的命名不能准确的确定,造成编码过程中因为新想法出现了混乱。 

        而采用“意图导向编程”的编码方式,在编程开始假设这些“辅助方法”都已经存在,我只需先考虑这些“辅助方法”要实现的功能和他们的输入和输出,然后按程序要求写出这程序的主框架,确定了主框架,后面就只是“辅助方法”的编程,这种方法使得我在整个编程中思路非常清晰,而且其功能单一。对于代码的重构和优化,测试都提供和很大的便利。 在这一章中还提到了代码的重构,意图导向编程的创建方法只有一个功能,在代码迁移过程中比较容易,因为其只完成单一功能,迁移过程中只需把整个部分一走就行。





你可能感兴趣的:(敏捷技能修炼--------意图导向编程)