第三十四章 辞职前-《这个吞金兽不好养》


    第(2/3)页

    class    oneclass    {

    packagenameitems    =    null;

    ....

    void    funname1(arg){

    //initial    packagenameitems

    packagenameitems    =    arg;

    //other...

    }

    string    funname2(){

    \tpackagenameitems    =    extractpureinfo(packagenameitems);

    //do    sth

    ....

    result    =    getitemfrom(packagenameitems,    itemname)//1

    //do    sth

    ....

    return    result

    }

    }

    从那里分析,在//1处,本应该是从已经解包过的packagenameitems中,取它的第n项;但这里误传入了解包前的packagenameitems。

    似乎输入文本可能会发生几种情况,当然多数情况不需要进一步处理,直接用外部那个变量就行,此时两个变量内容一致,不会触发bug;但少数情况下,外部那个变量需要进一步处理,这才能提取到正确的内容。

    这种情况下,两个变量内容不同,误用了前一个变量就读不到正确数据了。

    这是个极为隐蔽的逻辑错误。
    第(2/3)页