在Tom上,我被打到12k后,下了八盤(pán),贏了七盤(pán),看來(lái)我的水平是長(zhǎng)進(jìn)了。看多了,有些東西就明白了。其實(shí),世界上的事情就是這樣。記得學(xué)過(guò)的一篇古文吧,“為學(xué)”。天下事有難易乎?沒(méi)有,都是不難也不易,象賣(mài)油翁的說(shuō)法,“手熟爾”。因此我從來(lái)不相信什么神話,我只知道接觸多了以后就熟悉了,熟悉以后,你才能理解,理解之后你才能超越。因此學(xué)東西的時(shí)候,最好先記住。這是最好的方式,非但不是愚蠢,而是樸實(shí)的,有效的。以前我只注重理解,而現(xiàn)在我開(kāi)始注重記憶,因?yàn)椴挥涀∈遣恍械摹S涀『螅拍苣眠^(guò)來(lái)就用;記住后,才能時(shí)時(shí)回味;記住后,才談得上積累。記住是為了忘記,是為了信手一揮,不用想,不用算的瀟灑,自由。
圍棋是精確的,有點(diǎn)像數(shù)學(xué),大方面看上去模糊,但是,每一步都精確無(wú)比,不能有一路的誤差,失之毫厘,繆以千里。有一盤(pán)棋,我的最大的一條大龍都被殺掉了,但是我還是贏了,而且贏了很多。因?yàn)閷?duì)手太差了,倒不是我多高明。
下棋是一個(gè)從模糊到清楚的事情;做軟件也是;談戀愛(ài)也是;人生也是。下棋的時(shí)候,先總體有個(gè)大概的想法,是亂戰(zhàn)還是圍大模樣,總得有個(gè)構(gòu)思;做軟件是要先有創(chuàng)意,之后在逐漸細(xì)分;談戀愛(ài)更是如此,從開(kāi)始模糊,到后來(lái)塵埃落定,更是從模糊到定性的過(guò)程。正所謂無(wú)名萬(wàn)物之始,有名萬(wàn)物之母。
我不喜歡有人把寫(xiě)代碼看做挺高尚的事情。我認(rèn)為做寫(xiě)程序和做飯差不多,沒(méi)什么神奇的,都是普通的事情,沒(méi)有必要高尚化,而所謂的癡迷則更加夸張。如果說(shuō)以前我還不能算是太懂的化,那么現(xiàn)在我至少算是大部分都知道了,說(shuō)實(shí)話我不喜歡沒(méi)有創(chuàng)意的軟件,比如某些網(wǎng)站,我實(shí)在是不愿意浪費(fèi)時(shí)間在這種無(wú)意義的工作上。
我是喜歡java的風(fēng)格的,我最討厭的是c++,簡(jiǎn)直是太糟糕了。c已經(jīng)夠慘了,象c++這樣的東西,簡(jiǎn)直讓人受不了。groovy是個(gè)好主意,可是我希望有一本書(shū)才好,否則我是受不了只看電子材料的。
少則得,多則惑。現(xiàn)在我只用兩個(gè)框架sturts,hibernate,偶爾看看spring,我覺(jué)得學(xué)了這些之后,就足夠了。不要再學(xué)什么ejb3了,因?yàn)檫@些東西組合起來(lái)已經(jīng)很強(qiáng)大了,完全可以承擔(dān)大型應(yīng)用的需要。因?yàn)閟pring 有一些新鮮的思想,所以應(yīng)該學(xué)習(xí)一下,但是不必太著急,在學(xué)習(xí)struts和hibernate的時(shí)候偶爾看看就行了。
Ioc并非新鮮的概念,因?yàn)樗蛣?dòng)態(tài)載入是同意的,其中組合了java的接口轉(zhuǎn)換。但是aop就不得不好好注意一下了。我們可以把它想象成一種callback,只是這種調(diào)用覆蓋面更廣。有了一種普遍推廣的意味。這種截取對(duì)于安全控制來(lái)說(shuō)實(shí)在是太好了。spring已經(jīng)有了一個(gè)安全框架acgie(也許拼錯(cuò)了)。應(yīng)該抽時(shí)間好好學(xué)學(xué)。還有一個(gè)就是事務(wù),spring 也有方案。如此,靈活明確的控制,比學(xué)習(xí)ejb清楚多了,spring才是程序員應(yīng)該理解使用的東西。
因此spring才是核心,hibernate and struts都是輔助。再想想是,靈活簡(jiǎn)潔的結(jié)構(gòu)才是核心。
再說(shuō)一下struts,我看到好多抱怨,我其實(shí)也有抱怨。但是,struts的優(yōu)點(diǎn)是非常的明確,正如我們的抱怨一樣,有針對(duì)性。struts提供了靈活的控制層,這是web層最最需要的,也是我們使用struts的主要理由。要求完美的東西是過(guò)分的,因此,struts還是當(dāng)前web層的最好選擇。
再說(shuō)一下ActionForm,我覺(jué)得永遠(yuǎn)也不要直接使用ActionForm作為業(yè)務(wù)層使用的Bean,因?yàn)锳ctionForm僅僅是個(gè)運(yùn)輸工具,裝的一堆東西可能是打包的,也可能是散亂的。因此,必須有一個(gè)拆分和打包ActionForm的環(huán)節(jié),處理ActionForm,這也正是struts的重大缺點(diǎn)(我認(rèn)為這是最大的問(wèn)題)。由于要處理ActionForm,使得我們分層時(shí)有點(diǎn)困難,也增加了一點(diǎn)多余的麻煩。
Validator是個(gè)好想法,用了一下覺(jué)得很方便,不錯(cuò)。
還有一個(gè)問(wèn)題就是中間層的問(wèn)題。主要的業(yè)務(wù)邏輯放在哪里呢?我們是用singlten,我并不覺(jué)得多好,但是基本解決了問(wèn)題。我現(xiàn)在疑惑的是有沒(méi)有更好的方法?(如果那位知道請(qǐng)告訴我)
還有一點(diǎn)就是struts的標(biāo)簽庫(kù),我實(shí)在是不太欣賞。因?yàn)樗黠@要比jstl的設(shè)計(jì)要差一些。它有點(diǎn)麻煩,不夠清楚,犯了大忌。但是用struts又不得不用它的某些標(biāo)簽庫(kù),實(shí)在是讓人很煩。