Jessie 今天上班,收到一封邮件,是老大临时在项目中加了一个小的需求功能改动。但是这个功能是用户经常使用的功能,是一个比较老的逻辑实现了,所以对于这部分的改动要小心。OK,背景介绍就到这里。
在程序中,有一个方法(这里涉及到公司信息,所以以简单的代码表示,我尽量写得清楚些,也为自己将来温故打好基础):
m_objectTxt= new StoreTxt().GetObjectTxt( aString, bIndex, 10, homeIndex.page);
GetObjectTxt方法的具体实现:
GetObjectTxt( aString, bIndex, 10, homeIndex.page)
{
// do something
}
经过需求分析,进行代码实现时,发现以上的方法就是我们要改动的方法,改动的具体办法是 在这个方法里加一个逻辑判断。这个时候大家可能会说,这个还不简单,加上参数,build一下 不就成了吗?
我刚开始也是这么想的,并且实现了功能。但是我之前说过啊,这个方法是一个比较久远的功能,是“牵一发而动全身”滴~
考虑以上的缘由,所以不能这么改,我就想到了 那就方法重载好了,但是呢,如果这样重载:
GetObjectTxt( aString, bIndex, 10, homeIndex.page,bool true)//true是新加的参数
{
//do something
//这里其实只有一块与上面的GetObjectTxt()不同,这样子代码重复的太多,而且代码不够优雅。
}
后来想到应该这么用,代码改动的最少。总体思想还是:方法重载。
当一种图书的类别是漫画书时,跳转到“中国传统水墨画瑰宝”这么一个Page上。这里就加了上面说的那个布尔类型的判断
m_objectTxt= new StoreTxt().GetObjectTxt( aString, bIndex, 10, homeIndex.page,true);
这个新方法是这样的
GetObjectTxt( aString, bIndex, 10, homeIndex.page,true)
{
//就是原来的的GetObjectTxt()。
//在其基础上,添加新的逻辑,即漫画书的判断
}
而老的GetObjectTxt()方法,则这样处理
m_objectTxt= new StoreTxt().GetObjectTxt( aString, bIndex, 10, homeIndex.page);
GetObjectTxt方法的具体实现:
GetObjectTxt( aString, bIndex, 10, homeIndex.page)
{
return GetObjectTxt( aString, bIndex, 10, homeIndex.page,false)
//就是说,在老的GetObjectTxt这个方法中,即使是4个参数的,但是在方法具体实现时,调用的是新的GetObjectTxt方法。
//当布尔值=true时,走漫画书的判断;false则还是走老逻辑
}