描述了針對第一個問題的思考, 在寫的過程中幾個關鍵詞逐漸引起了注意, 本篇就讓它們登臺吧, 它們是: 現(xiàn)在項目的套路及缺點, 數(shù)據(jù)庫實現(xiàn)業(yè)務邏輯, 程序設計的美.
先看第一個, 即現(xiàn)在項目的套路及缺點.
雖說現(xiàn)在所項目還是不很多, 但對項目所用架構和技術還是有一定了解的. 現(xiàn)在是B/S流行的時代,我們這里也只討論Java實現(xiàn)B/S可選擇的技術. 項目大都有三層, 也可以說五層. 三層是純Java的三層, 五層是包括了數(shù)據(jù)庫和HTML_CSS_JavaScript后的說法. 這里不防采用五層的說法. 這樣的分層大都有很多的框架可選(數(shù)據(jù)庫和HTML除外), 而項目中大多也都是基于這樣的分層圍繞著數(shù)據(jù)的CRUD實現(xiàn)些基本功能.
這樣做的好處顯而易見, 可以把別人寫的框架拿來就用, 從而極大地提高開發(fā)效率. 一個Java程序員把這些層上常用的技術掌握住,一般的工作也就可以勝任了.
但這樣的項目做著做著就會慢慢發(fā)現(xiàn), 似乎還缺點什么東西, 也不夠過癮. 一些很吸引人的概念和技術自己很少用到: OOP,AOP, 接口設計,WebService.....
在這樣用框架的思維主導下, 項目有些慘不忍睹了: 方法實現(xiàn)上以copy/paste為主, 方法調用的"私拉亂接", 方法很是變異的傳參方式... 這樣的項目一下子脆弱了,誰也不敢碰了, 好像一碰就癱掉一樣.而業(yè)務上的一點改動,在代碼上的變更費老勁了.
這顯然不是我們要的結果.
接著看第二個, 數(shù)據(jù)庫實現(xiàn)業(yè)務邏輯.
現(xiàn)在這個問題,我又想了這個話題.以前也多多少少地想過. 為什么這樣的方法不行? 也沒有系統(tǒng)地想過. 現(xiàn)在把一些零星的想法寫在這里跟大家討論,其實這是個很古拉很過時的話題了吧.
以下是現(xiàn)在能想到的一些因素, 但也不是很明確, 也不知具體每一個占多大比例:
1, 沒法用OO的概念. 好像并不是很有說服力, 最典型的反倒是C, 它也沒有什么OO的意思吧, 但可以想像,C做的項目也是很輝煌的.
2, 與具體的數(shù)據(jù)庫綁死了. 一般來說,一個項目很少在換數(shù)據(jù)庫吧? 不過這個因素像jBPM這樣的中間件得考慮的.
3, 人們喜歡了用具體的編程語言來實現(xiàn)業(yè)務邏輯. 這是一種可能, 畢竟并不是所有的程序都是有很豐富的數(shù)據(jù)的, 這樣由于習慣就直接導致了在一些用數(shù)據(jù)庫的項目中也不用數(shù)據(jù)庫來實現(xiàn)業(yè)務邏輯? 有些荒謬!
4, 由于數(shù)據(jù)庫的局限性,一些專門的編程語言更能勝任業(yè)務邏輯的實現(xiàn). 但這個局限性又具體表現(xiàn)在哪? 具體編程語言的優(yōu)越又體現(xiàn)在哪?
最后看第三個, 程序設計的美.
應該說這個我現(xiàn)在寫的最心虛, 自己也沒參與過設計優(yōu)良的項目開發(fā),考試大提示這里只能從反面來管窺下美的體現(xiàn).
1, 程序應該運行正確. 這是最起碼的要求, 或者說不算要求的要求.
2, 程序應該便于維護. 這個涉及的面太廣, 再往下分應該有: 處理代碼重用, 減少功能調用的私拉亂接, 代碼本身的可讀性應該高些, 低耦合以便于業(yè)務邏輯的擴展, 組件化地可插拔....
3, 程序運行效率應該高些. 這是性能上的要求了, 現(xiàn)在體會的還不深.
但要想達到設計優(yōu)良是有代價的, 是要投入巨大的人力物力財力的, 這樣一般的項目也招架不住, 于是我們要感謝那些開源框架的偉大了.
先看第一個, 即現(xiàn)在項目的套路及缺點.
雖說現(xiàn)在所項目還是不很多, 但對項目所用架構和技術還是有一定了解的. 現(xiàn)在是B/S流行的時代,我們這里也只討論Java實現(xiàn)B/S可選擇的技術. 項目大都有三層, 也可以說五層. 三層是純Java的三層, 五層是包括了數(shù)據(jù)庫和HTML_CSS_JavaScript后的說法. 這里不防采用五層的說法. 這樣的分層大都有很多的框架可選(數(shù)據(jù)庫和HTML除外), 而項目中大多也都是基于這樣的分層圍繞著數(shù)據(jù)的CRUD實現(xiàn)些基本功能.
這樣做的好處顯而易見, 可以把別人寫的框架拿來就用, 從而極大地提高開發(fā)效率. 一個Java程序員把這些層上常用的技術掌握住,一般的工作也就可以勝任了.
但這樣的項目做著做著就會慢慢發(fā)現(xiàn), 似乎還缺點什么東西, 也不夠過癮. 一些很吸引人的概念和技術自己很少用到: OOP,AOP, 接口設計,WebService.....
在這樣用框架的思維主導下, 項目有些慘不忍睹了: 方法實現(xiàn)上以copy/paste為主, 方法調用的"私拉亂接", 方法很是變異的傳參方式... 這樣的項目一下子脆弱了,誰也不敢碰了, 好像一碰就癱掉一樣.而業(yè)務上的一點改動,在代碼上的變更費老勁了.
這顯然不是我們要的結果.
接著看第二個, 數(shù)據(jù)庫實現(xiàn)業(yè)務邏輯.
現(xiàn)在這個問題,我又想了這個話題.以前也多多少少地想過. 為什么這樣的方法不行? 也沒有系統(tǒng)地想過. 現(xiàn)在把一些零星的想法寫在這里跟大家討論,其實這是個很古拉很過時的話題了吧.
以下是現(xiàn)在能想到的一些因素, 但也不是很明確, 也不知具體每一個占多大比例:
1, 沒法用OO的概念. 好像并不是很有說服力, 最典型的反倒是C, 它也沒有什么OO的意思吧, 但可以想像,C做的項目也是很輝煌的.
2, 與具體的數(shù)據(jù)庫綁死了. 一般來說,一個項目很少在換數(shù)據(jù)庫吧? 不過這個因素像jBPM這樣的中間件得考慮的.
3, 人們喜歡了用具體的編程語言來實現(xiàn)業(yè)務邏輯. 這是一種可能, 畢竟并不是所有的程序都是有很豐富的數(shù)據(jù)的, 這樣由于習慣就直接導致了在一些用數(shù)據(jù)庫的項目中也不用數(shù)據(jù)庫來實現(xiàn)業(yè)務邏輯? 有些荒謬!
4, 由于數(shù)據(jù)庫的局限性,一些專門的編程語言更能勝任業(yè)務邏輯的實現(xiàn). 但這個局限性又具體表現(xiàn)在哪? 具體編程語言的優(yōu)越又體現(xiàn)在哪?
最后看第三個, 程序設計的美.
應該說這個我現(xiàn)在寫的最心虛, 自己也沒參與過設計優(yōu)良的項目開發(fā),考試大提示這里只能從反面來管窺下美的體現(xiàn).
1, 程序應該運行正確. 這是最起碼的要求, 或者說不算要求的要求.
2, 程序應該便于維護. 這個涉及的面太廣, 再往下分應該有: 處理代碼重用, 減少功能調用的私拉亂接, 代碼本身的可讀性應該高些, 低耦合以便于業(yè)務邏輯的擴展, 組件化地可插拔....
3, 程序運行效率應該高些. 這是性能上的要求了, 現(xiàn)在體會的還不深.
但要想達到設計優(yōu)良是有代價的, 是要投入巨大的人力物力財力的, 這樣一般的項目也招架不住, 于是我們要感謝那些開源框架的偉大了.