在來(lái)兄弟會(huì)之前我從未從事過(guò)軟件開(kāi)發(fā)工作害淤,也沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò)什么軟機(jī)開(kāi)發(fā)知識(shí)扇雕,也是來(lái)兄弟會(huì)之后我第一次聽(tīng)說(shuō)了分布式開(kāi)發(fā),因?yàn)殛惱蠋煻啻握n上的自習(xí)講解窥摄,讓我對(duì)分布式開(kāi)發(fā)有了一個(gè)嶄新的認(rèn)識(shí)镶奉,在此我敘述一下我對(duì)分布式開(kāi)發(fā)的認(rèn)識(shí)和理解,不盡之處還望熟悉之人多多指教崭放。
說(shuō)到我理解的分布式開(kāi)發(fā)就需要提到幾個(gè)名詞哨苛。
架構(gòu),框架币砂,規(guī)范建峭。
字面上來(lái)解釋分布式開(kāi)發(fā),就是有計(jì)劃和規(guī)范的約束由多人合作開(kāi)發(fā)的一種方式决摧,這里我并沒(méi)有專門(mén)引用此名詞在軟件開(kāi)發(fā)上亿蒸。我們?nèi)粘Ia(chǎn)活動(dòng)也普遍的適用這樣的一種模式凑兰,日常生產(chǎn)活動(dòng)中我們可能將這種所謂的分布式開(kāi)發(fā)稱作為統(tǒng)籌規(guī)劃。是將生產(chǎn)資料和資源充分整合以最優(yōu)的效率來(lái)實(shí)現(xiàn)生產(chǎn)边锁。記得小時(shí)候上學(xué)的時(shí)候就學(xué)過(guò)統(tǒng)籌這個(gè)概念姑食,大概的意思就是我們?cè)谕粋€(gè)時(shí)間內(nèi)可以做很多事,舉例來(lái)說(shuō)我們燒一壺開(kāi)水的時(shí)間里還能洗臉?biāo)⒀烂┨常驋呶葑右舭搿_@是一個(gè)人對(duì)時(shí)間的統(tǒng)籌,如果是多個(gè)人那么我們就需要分布式了贡蓖。就拿蓋房子來(lái)說(shuō)曹鸠,從設(shè)計(jì)到施工,如果是一個(gè)來(lái)做的話需要很長(zhǎng)時(shí)間斥铺,倘若是多人協(xié)作那就會(huì)大大的縮短生產(chǎn)時(shí)間彻桃,從而提升生產(chǎn)效率。雖然說(shuō)是人多力量大晾蜘,效率高叛薯,這些都是需要條件的。這里就需要引入之前我提到的幾個(gè)名詞笙纤,架構(gòu),框架组力,規(guī)范省容。
還拿蓋房子來(lái)舉例,房屋的設(shè)計(jì)就是架構(gòu)燎字,房子被用來(lái)干什么腥椒,怎么干,使用條件和年限是多少等一系列問(wèn)題直接影響后續(xù)的多人協(xié)作候衍,所以一個(gè)架構(gòu)的設(shè)計(jì)直接影響未來(lái)生產(chǎn)的走向笼蛛,如何高效的整合與利用資源是架構(gòu)需要考慮的直接問(wèn)題,確定了架構(gòu)也就是確定了目標(biāo)這樣接下來(lái)的工作才能有效的進(jìn)行蛉鹿。這里我把架構(gòu)的最終實(shí)現(xiàn)手段比喻成施工圖紙的成功繪制滨砍。
有了架構(gòu),就有了圖紙妖异,接下來(lái)就是施工了惋戏,而施工就需要框架與規(guī)范,這里兩者相輔相成他膳,相互制約响逢。
所謂相輔相成,是有了規(guī)范可以使框架更有規(guī)范和約束能力棕孙,正因?yàn)橛辛丝蚣懿庞辛艘?guī)范的可執(zhí)行基礎(chǔ)舔亭。這里我們通俗的講框架就是房子中的梁些膨,板,柱钦铺。其他的任何元素都是在這些框架內(nèi)填設(shè)的订雾,而梁要做多么粗,板要做多么厚职抡,柱子要做多么粗這些都是規(guī)范葬燎。而這一切的一切都是讓每個(gè)參與到生產(chǎn)中的生產(chǎn)者更準(zhǔn)確高效的完成工作。
房子我們?nèi)祟惿w了很多年缚甩,所以各種規(guī)范和方法相對(duì)成熟谱净,而計(jì)算機(jī)從發(fā)明至今不過(guò)幾十年,而長(zhǎng)久以來(lái)的經(jīng)驗(yàn)來(lái)說(shuō)程序開(kāi)發(fā)一直處于單打獨(dú)斗階段擅威,本來(lái)計(jì)算機(jī)只是處理計(jì)算工作是程序員為其在計(jì)算中賦予數(shù)據(jù)某些含義壕探,而這些含義或許只有程序人員自己能理解,換成另外的一個(gè)程序員來(lái)說(shuō)或許就很難理解了郊丛,更不要說(shuō)在其基礎(chǔ)上做什么添加與修改了李请。所以,有時(shí)一個(gè)程序的開(kāi)發(fā)會(huì)話費(fèi)一個(gè)程序開(kāi)發(fā)人員很大一部分精力厉熟,但是导盅,隨著互聯(lián)網(wǎng)的迅猛發(fā)展,這種傳統(tǒng)的開(kāi)發(fā)模式顯然不能滿足市場(chǎng)需求的巨大壓力揍瑟。所以白翻,軟件開(kāi)發(fā)的分布式開(kāi)發(fā)同樣需要架構(gòu),框架绢片,以及規(guī)范滤馍。
如果我說(shuō)軟件開(kāi)發(fā)是邏輯性最強(qiáng)的工作相信沒(méi)有人反對(duì),因?yàn)樗允怯?jì)算機(jī)遵循的真理底循,所以一個(gè)合理的架構(gòu)巢株,配合一個(gè)框架以及開(kāi)發(fā)規(guī)范可以使軟件開(kāi)發(fā)可以像蓋房子一樣敏捷高效的開(kāi)發(fā)出來(lái)。這一方面最常見(jiàn)的想必就是目前最常見(jiàn)的開(kāi)源軟件了熙涤,每一款開(kāi)源軟件都是對(duì)外公布了源代碼阁苞,接下來(lái)任何一個(gè)程序開(kāi)發(fā)人員都可以在前人的基礎(chǔ)上做修改做再開(kāi)發(fā)。
而開(kāi)源軟件在形式上還是不太符合分布式開(kāi)發(fā)祠挫,目前開(kāi)源軟件類似在已經(jīng)蓋好的大樓上面重新裝修猬错。并不是所有程序人員都從項(xiàng)目啟動(dòng)就開(kāi)始編寫(xiě)代碼,因?yàn)樵诔绦蜷_(kāi)發(fā)時(shí)團(tuán)隊(duì)協(xié)作會(huì)出現(xiàn)重復(fù)造輪子的情況茸歧,也就是我們常說(shuō)的版本沖突問(wèn)題倦炒,同一串代碼的重復(fù)編寫(xiě),甚至是文件的沖突软瞎,WEB項(xiàng)目由于前端逢唤,后端因?yàn)樯婕暗募夹g(shù)偏多更是存在大量問(wèn)題拉讯,所以無(wú)論是前端還是后端,都需要架構(gòu)鳖藕,框架以及規(guī)范魔慷。
最后我以前端為例講講前端的分布式開(kāi)發(fā)。
目前大多數(shù)前端的界面開(kāi)發(fā)普遍采用Html,Css,Javascript三種語(yǔ)言協(xié)同開(kāi)發(fā)著恩,Html是標(biāo)簽化語(yǔ)言院尔,Css通過(guò)選擇器將Html標(biāo)簽賦予屬性以實(shí)現(xiàn)各類樣式,而Javascript為頁(yè)面又增添了許多動(dòng)態(tài)特效喉誊。但是一個(gè)html界面配合一套Css樣式是常態(tài)邀摆,幾個(gè)html界面就需要幾個(gè)css樣式文件,意味著網(wǎng)頁(yè)越多css樣式編寫(xiě)就越多伍茄,一些重復(fù)的屬性就需要不斷重復(fù)來(lái)寫(xiě)栋盹,而這種重復(fù)工作肯定是不符合我們分布式開(kāi)發(fā)的,所以我們以模塊為單位敷矫,分布式開(kāi)發(fā)又面臨一個(gè)文件過(guò)多的問(wèn)題例获,所以使css優(yōu)雅而高效的less以及sass解決了文件過(guò)多的問(wèn)題,開(kāi)發(fā)階段我們以模塊式開(kāi)發(fā)曹仗,上線投入使用時(shí)將文件整合打包上線榨汤。而像bootstrap這樣的優(yōu)秀的前端框架也正是為前端分布式開(kāi)發(fā)注入了一劑強(qiáng)心良藥,但是為了程序開(kāi)發(fā)的高度自由與定制化怎茫,使用sass這種css擴(kuò)展語(yǔ)言在分布式上充分的實(shí)現(xiàn)了自由與可定制化件余,而compass這種類似github組件化管理庫(kù)讓重復(fù)造輪子的問(wèn)題盡可能的減少了。
所以分布式開(kāi)發(fā)由可以稱之為組件式開(kāi)發(fā)遭居。而實(shí)現(xiàn)組件式開(kāi)發(fā)并且使程序的穩(wěn)定性以及可擴(kuò)展性達(dá)到最優(yōu)的生產(chǎn)開(kāi)發(fā)環(huán)境最缺乏或許就是一套分布式開(kāi)發(fā)的架構(gòu)設(shè)計(jì)者,所以回到日常生產(chǎn)中來(lái)旬渠,能將各種資源最優(yōu)整合的我們稱之為領(lǐng)導(dǎo)者俱萍,而在軟件開(kāi)發(fā)領(lǐng)域,我們把這種領(lǐng)導(dǎo)者稱之為架構(gòu)師告丢,所以組件式開(kāi)發(fā)也好分布式開(kāi)發(fā)也罷枪蘑,一個(gè)成熟穩(wěn)定的架構(gòu)設(shè)計(jì)直接關(guān)乎今后的生產(chǎn)發(fā)展,多嘗試岖免,多觀察,多實(shí)踐,多總結(jié)是分布式開(kāi)發(fā)最需要的一些品質(zhì)几于。