ID 收入 支出 余額
1 8 8
2 5 3
3 2 5
上面就是一份很簡單的流水帳,關(guān)于余額的查詢,大約有三種方法:
記錄集遍歷記錄,從記錄集的第一條開始,用一個變量記錄收入和支出,得到余額,并把它記錄到表中,或內(nèi)存中。再顯示出來。
可以參考此地址中文章的第一種方法:
http://www.accessoft.com/article-show.asp?id=5440
后兩種方法比較接近,一種叫雙select法,運用了嵌套select得到流水余額,最后一種是雙DSUM法,可參考此地址中文章的例子:
http://www.accessoft.com/article-show.asp?id=2219
其中雙DSUM法和它的感情比較深,在愛賽思網(wǎng)還在的時候,我就設(shè)計了它,并把例子放在愛賽思網(wǎng)上,贏得了很高的點擊率。和雙select法比較,各有特點。而今天,我做的財務(wù)軟件中,也使用到了流水余額的算法。一開始,我是使用了方法1,并把這個方法封裝成類來運用。無意中,又記起了很老的雙DSUM法,想運用它改改這個。
誰知,此時發(fā)現(xiàn)雙DSUM法有一個不好的地方,從今以后,會把雙DSUM法放到一邊去,不會再運用它了。
那為什么我要放棄它呢?最重要的原因是,我們在實際設(shè)計的軟件中,不是這么單純把一個表做個流水余額這么簡單,它很可能是復合的條件,而這個條件,在不同的情況,不同的表中又是不同的。
如果使用雙DSUM法的話,會使情況變得復雜化,DSUM后面的條件會變得很煩。多個地方使用雙DSUM法,反而不如使用方法1封裝成類后使用,那樣方便又簡單又容易維護。
所以雙select法也是有這個問題存在。雙select和雙DSUM法會使軟件變得不容易維護。
思考題歸思考題,是一種腦力的挑戰(zhàn),但實際歸實際,特別是軟件的設(shè)計,我們都要習慣用解耦合的思想去設(shè)計它,從而贏得軟件的可重用性。易于維護是很重要的。千萬不要掉入精簡,最簡化的怪圈。