我認(rèn)為這可以實現(xiàn)目標(biāo) — 并且以非常高的水平實現(xiàn)。這是起步的一個好辦法,但它還沒有提供開始編程所需的足夠細(xì)粒度。 第二次(和第三次……)的一些想法 無疑,在我有望創(chuàng)建一個可運(yùn)行的且精心編寫的 Codecheck 實用工具之前,我需要更加徹底地對事情進(jìn)行考慮。然而,事實是我不能獨立于代碼構(gòu)建過程來進(jìn)行這種思考和設(shè)計。您曾經(jīng)多少次提出一個很好的計劃然后開始編程,但隨后發(fā)現(xiàn)實際情況(就像這樣:我怎么把這給忘了?)迫使您改變設(shè)計? 避免過度的設(shè)計是我從極限編程(一種輕型方法論,它將通行的編程實踐發(fā)揮至極限,并且推動了我的 utPLSQL 單元測試框架;關(guān)于更多信息,請參見 www.XProgramming.com)中學(xué)到的最重要的原則之一。比如說,為一個三年的開發(fā)項目提出一個總體計劃是否真的有意義,而我們都知道這個計劃在六個月之內(nèi)就會漏洞百出?在 Codecheck 的情況下,每個細(xì)節(jié)在構(gòu)建程序包之前都考慮得過于具體對我是否真的有意義? 極限編程人員喜歡問這個問題:使代碼運(yùn)行最簡單的方法是什么? 我喜歡回答這個問題所帶來的挑戰(zhàn),因為它使我馬上在幾個層次上展開思考。什么是簡單?它應(yīng)該意味著
表 1 提供了 Codecheck 存儲桶(現(xiàn)在直接稱為程序包)的一個說明。當(dāng)我象這樣分隔代碼時,還不可避免地要對程序包的層次結(jié)構(gòu)進(jìn)行考慮。在這個層次結(jié)構(gòu)的最頂層是最復(fù)雜的程序包或程序,它們構(gòu)建于其它許多元素之上。在最底層的是不可分割的程序包 — 小型、高度集中的程序包,它們支持一種用途,并且與其它的程序包沒有太多的相關(guān)性。
向上一級是 cc_types 和 cc_names.這些小型、非常專門化的程序包除 cc_util 之外不引用任何程序包。再向上一個層次,我們開始碰到更強(qiáng)健和復(fù)雜的代碼段。cc_arguments 程序包有一個非常明確的用途:合并來自 ALL_ARGUMENTS 和 DBMS_DESCRIBE 的信息。不過,要實現(xiàn)這一點,它將可能需要進(jìn)入到更低的層次中。在 cc_arguments 之上,我們看到的是 cc_smartargs 和 cc_report.前者直接在 cc_arguments 之上構(gòu)建,而 cc_report 使用更底層的程序包和 cc_smartargs 來完成它的任務(wù)。 在這個堆棧的頂層,我們有 Codecheck,它是為終端用戶而設(shè)計的程序包,包含了由希望檢查代碼的 PL/SQL 開發(fā)人員來實際運(yùn)行的程序。
|
新聞熱點
疑難解答
圖片精選