ABAP OO的八大理由(八)

 
原因三:代码重用性
代码重用性是软件维护和开发的一个重要衡量指标。我们应当把一些通用的代码放在一个中心库里,而无须一遍一遍的重复编写功能相似的代码。下面就在代码重用方面检查一下ABAP OO和ABAP OP孰优孰劣。
面向过程的代码重用性
在面向过程的模式中没有什么专门的机制来支持代码的重用性。你可以定义通用的过程,但是如果你想在特殊情况下使用通用代码,你不得不建立很庞大的模块池,每个功能模块又不得不有复杂的参数,而每个功能模块中你又不得不使用复杂的分支语句,例如SWITCH CASE.。
比如为了给银行账号加入两个特殊的账号,检查账号和存款账号,我们不得不修改我们的程序以支持这种变化。下面的例子演示了对功能模块withdraw的修改。
FUNCTION withdraw.
 CASE kind.
 WHEN ‘C’.
     PERFORM withdraw_from_checking_account USING id amount.
 WHEN ‘S’.
PERORM withdraw_from_savings_account USING id amount.   
 WHEN OTHERS.
    RAISE EXCEPTION TYPE cx_unknown_account_type.
  ENDCASE.
ENDFUNCTION.
FORM withdraw_from_checking_account.
      USING i_id TYPE accounts-id
             Amount TYPE accounts-amount.
 DATA: account_wa TYPE accounts.
 READ TABLE account_tab WITH TABLE KEY id = i_id
        INTO account_wa.
 Account_wa-amount = account_wa-amount – amount.
 MODIFY TABLE account_tab FROM account_wa.
 IF account_wa-amount < 0.
    ………..
 ENDIF.
ENDFORM.
FORM withdraw_from_savings_account.
      USING i_id TYPE accounts-id
             Amount TYPE accounts-amount
RAISING cx_negative_amount..
 DATA: account_wa TYPE accounts.
 READ TABLE account_tab WITH TABLE KEY id = i_id
        INTO account_wa.
 IF account_wa-amount > i_amount.
Account_wa-amount = account_wa-amount – amount.
MODIFY account_tab FROM account_wa.
 ELSE.
    RAISE cx_negative_amount.
 ENDIF.
ENDFORM.
这样你就不得不怎加新的参数帐户类型了
在这个例子中还得增加新的例外信息,即如果帐户类型不在合理范围之内的情况。
最终为了实现对不同的帐户类型采取不同的处理逻辑,那么你就不得不写两个form来分别处理两种不同的情况。通过CASE语句来实现分支。
ABAP OO 的代码可重用性
在ABAP OO中通过继承来实现代码的可重用性,可以通过通用的父类来派生特殊的子类。这样好处是简单的类既可代替代码庞杂的模块池,简单的方法参数既可代替功能模块复杂的参数,最重要的是通过继承实现了类的多态。这样就实现了子类的对象仍然可以使用父类的方法。这大大增强了软件开发的建模能力。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值