鍍金池/ 教程/ Java/ 借船下海還是造船下海
分布式鎖的簡(jiǎn)單實(shí)現(xiàn)
關(guān)于框架體系與戰(zhàn)術(shù)的思考
開(kāi)源與中小型軟件公司的未來(lái)趨勢(shì)
生態(tài)圈的建立
用200行的DBF解析器來(lái)展示良好架構(gòu)設(shè)計(jì)
緣起
業(yè)務(wù)流程引擎設(shè)計(jì)
軟件開(kāi)發(fā)雜談
高屋建瓴,理念先行
借船下海還是造船下海
Web界面快速開(kāi)發(fā)實(shí)踐
教計(jì)算機(jī)程序解數(shù)學(xué)題
量身定制規(guī)則引擎,適應(yīng)多變業(yè)務(wù)場(chǎng)景
緩存相關(guān)代碼的演變
理想的開(kāi)源框架與設(shè)計(jì)原則
框架2.0的設(shè)計(jì)梳理
與屈原對(duì)話及開(kāi)源精神

借船下海還是造船下海

1.借船與借力

三國(guó)時(shí)期,曹操率大軍想要征服東吳,孫權(quán)、劉備聯(lián)合抗曹,“草船借箭”即來(lái)源于此,意即運(yùn)用智謀,憑借他人的人力或財(cái)力來(lái)實(shí)現(xiàn)自己的目標(biāo)。我們來(lái)看看這個(gè)故事的幾個(gè)關(guān)鍵環(huán)節(jié)。

為了籌集十萬(wàn)支箭,諸葛亮找到魯肅。諸葛亮說(shuō):“這件事要請(qǐng)你幫我的忙。希望你能借給我20只船,每只船上30個(gè)軍士,船要用青布慢子遮起來(lái),還要一千多個(gè)草把子,排在船兩邊?!钡谌焖母鼤r(shí)候,諸葛亮邀請(qǐng)魯肅一起,把船用繩索連起來(lái)向曹操對(duì)岸開(kāi)去。那天江上大霧迷漫,對(duì)面都看不見(jiàn)人。當(dāng)船靠近曹軍水寨時(shí),諸葛亮命船一字兒擺開(kāi),叫士兵擂鼓吶喊。曹操以為對(duì)方來(lái)進(jìn)攻,又因霧大怕中埋伏,就派六千名弓箭手朝江中放箭,雨點(diǎn)般的箭紛紛射在草把子上。過(guò)了一會(huì),諸葛亮又命船掉過(guò)頭來(lái),讓另一面受箭。

太陽(yáng)出來(lái)了,霧要散了,諸葛亮令船趕緊往回開(kāi)。這時(shí)船的兩邊草把子上密密麻麻地插滿了箭,每只船上至少五、六千支,總共超過(guò)了十萬(wàn)支。魯肅把借箭的經(jīng)過(guò)告訴周瑜時(shí),周瑜感嘆地說(shuō):“諸葛亮神機(jī)妙算,我不如他?!?

2.順勢(shì)而為

“明者因時(shí)而變,知者隨事而制”這個(gè)用典,出自漢代桓寬《鹽鐵論》卷二之枕邊第十二篇。漢宣帝的中興之道,得益于諸多方面,根本的一條就是“明者因時(shí)而變,知者隨事而制”,了解民情,把握趨勢(shì),與時(shí)俱進(jìn),開(kāi)放而謀實(shí)。同樣,作為開(kāi)發(fā)團(tuán)隊(duì),在互聯(lián)網(wǎng)競(jìng)爭(zhēng)時(shí)代,也要干很多事。有些事很順利,有些卻坎坎坷坷的,有些根本就干不成。細(xì)想一下,事情的成敗原因可以歸結(jié)為一個(gè)字,勢(shì),順勢(shì)而為,如水推舟,事半功倍;逆勢(shì)為之,則逆水行舟,艱難險(xiǎn)阻,功敗垂成。

勢(shì)是什么,就是一種趨勢(shì),一種方向,一種潮流。順勢(shì)而為,關(guān)鍵在于一個(gè)“勢(shì)”字,要有一雙慧眼,判明大勢(shì)進(jìn)退;要有一顆名亮亮的新,悟達(dá)通透。做到“順勢(shì)而為,乘勢(shì)而上”。

3.框架開(kāi)發(fā)的“借力”與“順勢(shì)”

基礎(chǔ)的框架開(kāi)發(fā)并不難,但是要想做得優(yōu)雅、健壯并不容易,要做出一個(gè)好的框架往往會(huì)花費(fèi)大量的時(shí)間、人力財(cái)力。衡量一個(gè)框架是否優(yōu)秀,往往有這些考量因素。

  • 清晰的代碼庫(kù),簡(jiǎn)單易用。代碼復(fù)用是把一個(gè)功能寫(xiě)成一個(gè)模塊,以便當(dāng)再次需要相同功能的時(shí)候,可以直接使用,而不用重新開(kāi)發(fā)。舉個(gè)例子,假如你的網(wǎng)站需要驗(yàn)證碼,你就可以把驗(yàn)證碼這個(gè)功能單獨(dú)提取出來(lái)以便復(fù)用。通常代碼復(fù)用是通過(guò)類(lèi)與對(duì)象來(lái)實(shí)現(xiàn)的,這也是面向?qū)ο缶幊膛c面向過(guò)程編程最主要的區(qū)別之一。以響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)為例,實(shí)現(xiàn)起來(lái)并不困難,但是要讓它在所有的目標(biāo)設(shè)備上都正常運(yùn)作會(huì)有一點(diǎn)小棘手。而框架可以讓這一工作變得簡(jiǎn)單。利用框架,你可以花最少的力氣創(chuàng)建響應(yīng)式且符合標(biāo)準(zhǔn)的網(wǎng)站,一切都很簡(jiǎn)單并且具有一致性。還有很多好處是顯而易見(jiàn)的,比如說(shuō)簡(jiǎn)單快速,以及在不同的設(shè)備之間的一致性等等。也就是說(shuō),框架最大的“勢(shì)”就是簡(jiǎn)單易用,即使只掌握少量的Web知識(shí),你也可以毫無(wú)障礙的使用它們。

  • 粉絲使用過(guò)程的“倒逼”,強(qiáng)大的框架創(chuàng)新體系,營(yíng)造良好的社區(qū)生態(tài)環(huán)境。“倒逼”是一種被動(dòng)行為,是“迫使”、“反推”等詞的升級(jí)版,該詞強(qiáng)化了反常規(guī)、逆向促動(dòng)之義。時(shí)下“倒逼”正在成為美談,并曾經(jīng)入選年度十大流行詞。各行各業(yè)的問(wèn)題動(dòng)輒倒逼,似乎“倒逼則靈”。在許多領(lǐng)域,“倒逼”的確是這樣大顯身手的。作為一種開(kāi)源力量,“倒逼”未嘗不是一種正向力量!堅(jiān)實(shí)的社區(qū)基礎(chǔ)和積累,以及豐富的模板系統(tǒng),往往可以為框架樹(shù)立良好的口碑,形成一種“引力場(chǎng)”。尤其是需要有大量忠實(shí)的社區(qū)粉絲,也是框架實(shí)力的最好支持。作為社區(qū)網(wǎng)站,也要站在運(yùn)營(yíng)者角度和用戶角度雙方面來(lái)考慮上諸多問(wèn)題。在用戶角度上完善網(wǎng)站產(chǎn)品,去滿足用戶的核心需求,幫助用戶解決問(wèn)題。

  • 簡(jiǎn)單的學(xué)習(xí)曲線,與相關(guān)應(yīng)用集成更加容易。學(xué)習(xí)曲線的定義為“在一定時(shí)間內(nèi)獲得的技能或知識(shí)的速率”,又稱(chēng)練習(xí)曲線(practice curves)。人們?yōu)榱酥缹W(xué)習(xí)進(jìn)程中的現(xiàn)象和進(jìn)步的快慢的詳情,作為以后努力的指針,應(yīng)用統(tǒng)計(jì)圖的方法作一條線,把它表示出來(lái)。它源于“二戰(zhàn)”時(shí)期的飛機(jī)工業(yè),當(dāng)產(chǎn)量上升時(shí),生產(chǎn)每架飛機(jī)的勞動(dòng)時(shí)間會(huì)極大地下降。隨后的研究表明,在許多行業(yè)都存在這種現(xiàn)象。同樣,在框架應(yīng)用中,我們需要的不僅僅是模板,還更想要陳述式的可重用的模板框架。尤其需要能夠創(chuàng)建可擴(kuò)展的互聯(lián)網(wǎng)應(yīng)用。

  • 文檔支持與引導(dǎo)系統(tǒng)。寫(xiě)文檔不容易同時(shí)也是需要花費(fèi)一些時(shí)間的。作為潛在的用戶,我們第一次接觸開(kāi)源項(xiàng)目,很可能就是通過(guò)閱讀README文件。我們需要確保它很棒并且包含了有用的信息。以Tiny框架為例,我們始終認(rèn)為文檔是能為用戶做的最好的事了!文檔不僅能夠節(jié)省用戶大量的時(shí)間,也可以讓用戶確信,我們的確是把他們當(dāng)做上帝,而且,我們是一幫有血有肉的人,不是一個(gè)產(chǎn)生代碼的機(jī)器。

  • 向后兼容,同時(shí)把握大勢(shì),對(duì)主流技術(shù)發(fā)展有一個(gè)準(zhǔn)確的判斷。關(guān)于軟件開(kāi)發(fā)的一件很令人生氣的事,就是當(dāng)你升級(jí)一個(gè)庫(kù)但是數(shù)百個(gè)測(cè)試失敗了。更讓我生氣的就是我還要重寫(xiě)我一半的基礎(chǔ)代碼,因?yàn)橛腥嗽跊](méi)有任何警告的前提下決定打破公共的API。因此,向前看齊,同時(shí)致力于維護(hù)向后兼容性,也是我們重點(diǎn)把握的方向。以Tiny框架為例,我們常常會(huì)關(guān)注,使用這個(gè)項(xiàng)目有幾個(gè)月了嗎?是否覺(jué)得它還是不完整的?是否希望API在下一個(gè)版本會(huì)徹底地修改?是否在要求最多并且很老的項(xiàng)目中也能穩(wěn)定安全的使用?當(dāng)考慮到向后兼容時(shí),也能有一個(gè)很好的跟蹤記錄。

  • 可延續(xù)的技術(shù)支持。有些人可能關(guān)心許可證,但是真正使用框架或庫(kù)的人很關(guān)心的是有保障的后續(xù)服務(wù)和支持。所以真正可用的框架包含了框架的可用及有保障的支持和服務(wù),這樣才能讓客戶在使用過(guò)程中更加放心。

鄭和下西洋,沒(méi)有人關(guān)心他使用的是什么船;諸葛亮借箭,也沒(méi)有人關(guān)心他使用的是誰(shuí)的船。不過(guò),他們都很輕松的完成了自己的目的。造船下海,還是借船下海,關(guān)鍵還是在于順勢(shì)而為,把握大勢(shì)!