極限編程潛在的中心前提就是兩種思想比一種要好。兩個(gè)程序員并排坐在一起,一個(gè)編程,另一個(gè)逐塊逐行地挑刺。這樣做的原因很明顯,如果在鍵盤上操作的人是司機(jī)的話,那么他旁邊的人就是領(lǐng)航員。當(dāng)中沒有誰是上司――他們的地位是平等的,角色是相輔相成的。極限編程讓人震驚的地方就是實(shí)際起作用的技術(shù)。
由于有回報(bào),極限編程已經(jīng)在前端開發(fā)圈里站穩(wěn)了腳跟。把兩個(gè)身價(jià)不菲的開發(fā)者安排在一臺機(jī)器上,似乎看起來是很荒謬的,但是事實(shí)證明并非如此。在極限編程中,大部分的程序缺陷在產(chǎn)生之前就被扼殺了;在編寫低速代碼時(shí),最優(yōu)化就出現(xiàn)了;知識相互交流;并且團(tuán)隊(duì)關(guān)系也就產(chǎn)生了。
依我的經(jīng)驗(yàn),這種現(xiàn)象還沒有滲透到數(shù)據(jù)庫層的開發(fā)中。我注意到在有的團(tuán)隊(duì)中,一個(gè)人編寫存儲過程,第二個(gè)人編寫數(shù)據(jù)傳輸系統(tǒng)(DTS),第三個(gè)做體系機(jī)構(gòu),而第四個(gè)人為中間設(shè)備界面做評注。每個(gè)人都孤立地創(chuàng)作所需的對象,而且?guī)缀醪粫Υa進(jìn)行檢查。也許設(shè)計(jì)師規(guī)定Sproc98765接受特定的參數(shù),并返回某個(gè)結(jié)果;然后團(tuán)隊(duì)中的其他成員就與之相對應(yīng)。在任何一個(gè)嚴(yán)謹(jǐn)?shù)拈_發(fā)組織中,檢查代碼和再因子分解是一個(gè)項(xiàng)目不可或缺的部分,但是由于某些奇怪的原因,它們并沒有延伸到數(shù)據(jù)庫中。
我無法理解這點(diǎn)。也許我們共同蒙蔽了管理者,讓他們認(rèn)為我們對數(shù)據(jù)庫已經(jīng)無所不知了。或者我們服務(wù)的定價(jià)太高,以至于會計(jì)人員都因?yàn)楹怂忝總€(gè)星期再因子分解和極限編程的花銷而氣喘如牛了。
舉個(gè)例子來說,在一個(gè)包含了400個(gè)表格和1,600個(gè)存儲過程的數(shù)據(jù)庫中,我得到的每一個(gè)結(jié)果都是正確的幾率是多大呢?即使有時(shí)候會出現(xiàn)那樣的情況,那么下一次一個(gè)部門或客戶需要知道某個(gè)表中的新加的列,我就必須重新訪問不計(jì)其數(shù)的程序、用戶自定義函數(shù)(UDF)和查看――而且這只說明了表格結(jié)構(gòu)的變化。
如果可能的話,我鼓勵(lì)您嘗試用極限編程方法去解決當(dāng)前面臨的SQL Server中的問題。對于這種方法,可供選擇的包括一個(gè)復(fù)雜存儲過程的最新進(jìn)展,對一個(gè)低速程序再次進(jìn)行因子分解和使一個(gè)查看最優(yōu)化。至少嘗試一下,然后讓我知道它是怎么為您所用的。
關(guān)于極限編程的其他資源
新聞熱點(diǎn)
疑難解答
圖片精選