巨長的SQL -- i2佚事 (二) |
送交者: FoneFtwo 2003年10月06日19:40:33 於 [五 味 齋] 發送悄悄話 |
初接觸RCP時, 立刻發現它的複雜程度比我以前接觸的任何Java軟件都複雜. RCP是個多層的企業軟件, 在UI上用JSP和Java Bean, 在web tier用的是一個商業用的servlet engine. 中間的application server完全是自己寫的, 一點兒商業application server 都沒用. 數據庫用的是Oracle. 當時,RCP剛出來不久,很多方面都不完善.從軟件到開發過程都是如此.我剛開始看RCP軟件的source code時,經常感到非常吃驚 .Souce code經常會有非常基本的錯誤.其中的一個最基本的錯誤是我在建立開發環境時發現的. 我到i2後, 需要做的第一件事是建立起開發環境. 當時, 開發環境的軟件和參數都需要自己逐個建立調節. 儘管也有指導建立開發環境的文件, 但文件的很多地方都已過時, 所以指導文件的很多地方都不準確. 指導文件只能起參考的作用. 建立起一個新的開發環境, 對當時在RCP已工作一年的開發人員來說都是個不容易的是, 更別提我這個新入門的人了. RCP當時compile用的工具是Make, 因為RCP用的Java文件太多了. 當時市場上一般的開發工具比如JBuilder和Visual Cafe都不適用. 在所有的文件重新Compile一次的時間非常長. 所以採用了Make. 我當時對Make並不熟悉, 但又急於建立起開發環境, 就想用JBuilder來先compile所有的文件. 在compile的過程中,compile的速度非常慢,這就自不待言了.在修補compile過程中的各種錯誤時,我發現一個Java文件里的一句SQL出錯了.我到出錯的地方一看,發現一句巨長的SQL從左到右寫在一行上.這讓我感到又可氣又可笑.沒想到在專門作軟件的公司看見這麼不專業的程序.再仔細一看,發現這句SQL沒有寫完.這讓我感到驚訝.我到ClearCase里一查,發現這句SQL是完整的.但JBuilder里的SQL明明是不完整的.在經過幾個小時的研究之後,我發現當時的JBuilder允許的一行的最寬長度是1024bytes.如果一行語句超過這個長度,JBuilder自動把超過的部分砍掉.這句長SQL就是這樣被JBuilder自動從中間截斷了.RCP的人不用JBuilder來compile,所以這個錯誤一直沒有被發現. 在改完這個語句後,我繼續compile.但我發現在別的文件還存在着同樣的問題.顯然這種寫法出自同一個人之手.我一氣之下,不用JBuilder了,改用make來compile.兩三天后,我終於建立好了開發環境.這讓我的印度同事非常吃驚.他沒想到我用這麼斷的時間就完成了這項工作.我後來發現有的人用一個星期,甚至一個月的時間才建立好開發環境.
|
|
|
|
實用資訊 | |