在公司三年前選擇Spring+Hibernate+WebWork2作為公司開(kāi)發(fā)框架時(shí)我們的一個(gè)項(xiàng)目經(jīng)理提出了很多擔(dān)心的意見(jiàn),很多的爭(zhēng)論也花費(fèi)了不少時(shí)間。不過(guò)現(xiàn)在這個(gè)項(xiàng)目經(jīng)理在經(jīng)歷過(guò)維護(hù)惡夢(mèng)后再也不提我們也可以用自動(dòng)生成工具生成DAO代碼之類(lèi)的話了,現(xiàn)在他可以用1個(gè)人維護(hù)一個(gè)客戶(hù)的所有項(xiàng)目了。
下面是我們對(duì)選擇一個(gè)框架的一些思考,希望能對(duì)讀者有所啟發(fā)。
1) 首先看對(duì)維護(hù)帶來(lái)的什么效果
其實(shí)很多爭(zhēng)論是沒(méi)有意義的,比如在沒(méi)有一個(gè)大前提之下就進(jìn)行UNIX和WINDOWS誰(shuí)好的爭(zhēng)論只能是浪費(fèi)時(shí)間,同樣做一個(gè)網(wǎng)站可以用10多種技術(shù),一個(gè)公司(特別是小公司),采用一種最適合自己客戶(hù)要求的框架作為主要的開(kāi)發(fā)要求應(yīng)該是容易培訓(xùn)新手和維護(hù)的。
2) 在封閉和開(kāi)放之間選擇一個(gè)平衡點(diǎn)
太開(kāi)放和靈活會(huì)導(dǎo)致比較高的學(xué)習(xí)曲線,那樣別人還不如直接用原生的工具呢;太封閉對(duì)公司雖然更安全(比如有些公司的組件只有二進(jìn)制代碼和使用說(shuō)明),但是對(duì)開(kāi)發(fā)人員的前途是不利的,如果人員留不住,最終也會(huì)拖慢公司的競(jìng)爭(zhēng)能力。
3) 不斷積累和持續(xù)過(guò)程才是正常
我們給新手培訓(xùn)時(shí)很強(qiáng)調(diào)使用一個(gè)框架雖然站在別人的肩膀上了,但是這還是一個(gè)起點(diǎn)而不是終點(diǎn)!一個(gè)框架最初使用時(shí),肯定會(huì)發(fā)現(xiàn)有好多客戶(hù)要的功能框架不能提供。那就通過(guò)項(xiàng)目逐步積累組件吧,千萬(wàn)不要老是拷貝粘貼搞開(kāi)發(fā)。讓每個(gè)開(kāi)發(fā)者都有機(jī)會(huì)成為框架和組件庫(kù)的貢獻(xiàn)者,那這樣的文化氛圍才是別的公司不能一下走學(xué)走的。
llano的三個(gè)版本集成如下:
llano for java
ExtJS/Spring/Hibernate/SiteMesh/Freemaarker/log4j/JUnit
llano for .net 2.0
ExtJS/NHibernate/log4net/NUunit
llano for .net 3.5
ExtJS/LINQ/log4net
alex 7-10
下面是我們對(duì)選擇一個(gè)框架的一些思考,希望能對(duì)讀者有所啟發(fā)。
1) 首先看對(duì)維護(hù)帶來(lái)的什么效果
其實(shí)很多爭(zhēng)論是沒(méi)有意義的,比如在沒(méi)有一個(gè)大前提之下就進(jìn)行UNIX和WINDOWS誰(shuí)好的爭(zhēng)論只能是浪費(fèi)時(shí)間,同樣做一個(gè)網(wǎng)站可以用10多種技術(shù),一個(gè)公司(特別是小公司),采用一種最適合自己客戶(hù)要求的框架作為主要的開(kāi)發(fā)要求應(yīng)該是容易培訓(xùn)新手和維護(hù)的。
2) 在封閉和開(kāi)放之間選擇一個(gè)平衡點(diǎn)
太開(kāi)放和靈活會(huì)導(dǎo)致比較高的學(xué)習(xí)曲線,那樣別人還不如直接用原生的工具呢;太封閉對(duì)公司雖然更安全(比如有些公司的組件只有二進(jìn)制代碼和使用說(shuō)明),但是對(duì)開(kāi)發(fā)人員的前途是不利的,如果人員留不住,最終也會(huì)拖慢公司的競(jìng)爭(zhēng)能力。
3) 不斷積累和持續(xù)過(guò)程才是正常
我們給新手培訓(xùn)時(shí)很強(qiáng)調(diào)使用一個(gè)框架雖然站在別人的肩膀上了,但是這還是一個(gè)起點(diǎn)而不是終點(diǎn)!一個(gè)框架最初使用時(shí),肯定會(huì)發(fā)現(xiàn)有好多客戶(hù)要的功能框架不能提供。那就通過(guò)項(xiàng)目逐步積累組件吧,千萬(wàn)不要老是拷貝粘貼搞開(kāi)發(fā)。讓每個(gè)開(kāi)發(fā)者都有機(jī)會(huì)成為框架和組件庫(kù)的貢獻(xiàn)者,那這樣的文化氛圍才是別的公司不能一下走學(xué)走的。
llano的三個(gè)版本集成如下:
llano for java
ExtJS/Spring/Hibernate/SiteMesh/Freemaarker/log4j/JUnit
llano for .net 2.0
ExtJS/NHibernate/log4net/NUunit
llano for .net 3.5
ExtJS/LINQ/log4net
alex 7-10