业务系统里面常见的方法接口设计

          在程序中用得最多的还是方法,在处理业务的系统中如何设计方法是一个很重要的问题。很多系统由于缺乏统一的约定而导致维护困难。本文主要介绍的是偶在平常的开发中总结出来的一些方法设计的思路。希望大家不嫌弃。

 

1.         简单的方法

 void DoSth(args)
    {

           // do some thing here

           // throw some error here if the method was not run correctly 
    }

       方法没有返回值,也没有特别的错误标示,一般用在一些不易出错的 所以如果方法有可能执行不成功的时候,则可以在方法里面抛出异常,在调用的地方用catch捕捉。或者根本不捕捉方法里面可能产生的异常,从而让异常跟着堆栈往上层爬,一直到合适的位置才进行捕捉。这种情况通常用于对方法中的异常没有十足的把握处理、不想在本方法中处理异常、有意向上层屏蔽底层异常的情况。很多设计这主张“底层抛出异常,上层处理异常”的设计原则,在这种设计原则的指导下,用的最多的方法设计就是这种。

 

以下的几种方法都要求尽量捕捉方法中可能存在的Exception。

 

2.         返回字符串/数字

string/int DoSth(args)
{

       // do some thing here

       // return some message if the method was not run correctly

}

执行某个方法,然后把结果用字符串/数字的形式返回,比如返回“OK”/1表示执行成功,返回“不能预料的错误”/-1等信息表示没有正确执行

 

3.         返回布尔值

bool DoSth(args)
{

       // do some thing here

       // return true or false to tell the caller if the method was run correctly

}

执行某个方法,然后把结果用bool值的形式返回,true表示执行成功,false表示执行失败。一般用在只关心结果,不在乎为什么是那个结果或者导致结果的原因已经很明确的时候。

 

4.         返回布尔值和错误信息

bool DoSth(args, out string message)
{

       // do some thing here

// return true or false to tell the caller if the method was run correctly

       // set the error message to “message” if exception or error occurred.

}

       执行某个方法,然后把结果用bool值的形式返回,如果出错,将错误信息设置到一个out 的参数中。这种方法适合于那些比较复杂,可能出现多种意外的方法,执行中出现的意外可以通过message来查看,而结果可以通过返回值来查看。调用方可以只在乎结果,也可以在乎原因。

 

5.         两个方法合作(或者一个方法和一个属性合作的方法)

string errorMessage;

bool DoSth1(args)
{

       // do some thing here

       // return true or false to tell the caller if the method was run correctly

       // set the error message to “errorMessage” if exception or error occurred.

 

}

bool DoSth2(args)

{

       // do some thing here

// return true or false to tell the caller if the method was run correctly

       // set the error message to “errorMessage” if exception or error occurred.

}

 

string GetLastError()
{
       return errorMessage;
}

 

方法本身只返回结果,但是当结果为false的时候,可以通过GetLastError来获取最后一个错误信息。这种设计适合于类里面存在很多可能出错的方法的情况,比如上面的DoSth1,DoSth2,这样就不必要为每个方法添加out参数,在实际中用得比较多。另外,当程序中存在循环,而又不想因为循环的某一次发生错误而终止程序的时候,也可以采取这种办法。


事实上,每一种方法都有其用武之地, 问题的关键在于我们使用一种约定,最好的办法就是在同一个系统里面尽量只使用其中的一种,以避免维护和后续开发上的麻烦。

posted @ 2005-06-30 08:25  quitgame  阅读(1085)  评论(0编辑  收藏  举报