來(lái)源:|發(fā)布時(shí)間:2019-11-01 09:42:48
我為什么寫(xiě)這么多開(kāi)源框架,還長(zhǎng)期保持維護(hù)?
除了我想讓更多人受益于開(kāi)源外,還有一點(diǎn)就是,我想保持我良好的編程習(xí)慣
寫(xiě)業(yè)務(wù)代碼也可以保持良好的編程習(xí)慣啊
能,但是太慢!
寫(xiě)業(yè)務(wù)時(shí)無(wú)法注意到的細(xì)節(jié)
在寫(xiě)業(yè)務(wù)代碼時(shí),即使項(xiàng)目時(shí)間充裕,你也會(huì)忽略掉很多細(xì)節(jié),而這些細(xì)節(jié)正是影響你進(jìn)步速度的關(guān)鍵,但你自己卻很難察覺(jué),在不知不覺(jué)間就對(duì)你的進(jìn)階之路造成了很大的影響。
所以你的進(jìn)步速度非常之慢,做了多年也只是熟練而已,無(wú)法更進(jìn)一步。
業(yè)務(wù)代碼和框架代碼最直觀(guān)的差別就是,業(yè)務(wù)代碼可以隨意修改,而框架代碼,使用者不能直接修改。
由于業(yè)務(wù)代碼的修改不受限制,所以一有需求變動(dòng),你就直接通過(guò)修改問(wèn)題代碼的方式來(lái)快速解決問(wèn)題,即使這個(gè)代碼的變動(dòng)非常頻繁,但你的第一反應(yīng)卻不是通過(guò)代碼設(shè)計(jì)的方式來(lái)解決后續(xù)的擴(kuò)展問(wèn)題,因?yàn)檫@看似一勞永逸的方式,會(huì)浪費(fèi)你當(dāng)下大量的時(shí)間。
人類(lèi)的潛意識(shí)會(huì)更注重當(dāng)下付出的成本,而忽略掉未來(lái)會(huì)獲得的收益
因?yàn)槟闵厦娴木幋a方式,所養(yǎng)成的不好的編程習(xí)慣,會(huì)讓你本能的不注重代碼的耦合性、靈活性、可擴(kuò)展性。
所以即使你天天敲代碼,你的進(jìn)步也如此之慢,因?yàn)槟闫綍r(shí)就缺乏架構(gòu)設(shè)計(jì)、代碼設(shè)計(jì)的鍛煉,日積月累,你也只是搬磚的速度比之前更快一點(diǎn)而已。
寫(xiě)開(kāi)源框架時(shí)給你帶來(lái)的改變
這個(gè)時(shí)候如果有一個(gè)好的 leader 能每天 review 你的代碼,還時(shí)常提醒你這些問(wèn)題,只要你慢慢改成,并養(yǎng)成習(xí)慣,那你的進(jìn)階之路也會(huì)十分順暢
但如此好的 leader 是可遇不可求的,那我們?nèi)绻麤](méi)有一個(gè)好 leader,該如何養(yǎng)成一個(gè)好習(xí)慣呢?
我的建議就是做開(kāi)源庫(kù),而且盡量做開(kāi)源框架,比如架構(gòu)框架、UI 框架,網(wǎng)絡(luò)框架、圖片框架,盡量少做開(kāi)源 App(當(dāng)然如果為了學(xué)習(xí)某項(xiàng)技術(shù)也是可以的)
因?yàn)殚_(kāi)源 App 主要是幫助你和別人學(xué)習(xí)某些技術(shù),也是有大量的業(yè)務(wù)代碼存在的,無(wú)非就是用了一些新的技術(shù),而且還是你一個(gè)人寫(xiě),有些細(xì)節(jié)你更不會(huì)考慮 …
而開(kāi)源框架是拿給別人調(diào)用的,所以對(duì)代碼質(zhì)量要求更高,考慮的細(xì)節(jié)更多,對(duì)你的提升也越大。
并且你的框架代碼是放在服務(wù)器上的,使用者無(wú)法修改你的代碼,這就會(huì)強(qiáng)迫你更關(guān)注代碼的耦合性、靈活性、可擴(kuò)展性,甚至是你寫(xiě)業(yè)務(wù)時(shí)根本不會(huì)注重的注釋和文檔。
因?yàn)槭褂谜哂玫蒙杂胁凰蜁?huì)給你發(fā)起 issue,不斷地督促你優(yōu)化你的代碼、注釋、文檔,不斷地幫助你培養(yǎng)一個(gè)良好的編程習(xí)慣。
這就好比你有成百上千個(gè)好 leader 每天 review 你的代碼,并指出你的問(wèn)題,給予更好的建議,而且這些 leader 中絕對(duì)藏龍臥虎,這樣日積月累下去,你怎能不成長(zhǎng)?
良好的編程習(xí)慣助你快速進(jìn)步
我的很多編程習(xí)慣,經(jīng)過(guò)不斷的糾錯(cuò),優(yōu)化,糾錯(cuò),優(yōu)化,已經(jīng)深深的刻進(jìn)我的腦子里了
我框架用到的大多數(shù)設(shè)計(jì)模式,都不是我刻意去用的,都是遇到某些問(wèn)題,或者使用者需要增加什么功能,我為了不影響之前的版本,保證擴(kuò)展性的前提下,去解決這些問(wèn)題,而不得不去使用這些設(shè)計(jì)模式,很多情況下,代碼已經(jīng)寫(xiě)完了,才知道,原來(lái)我用的是 xx 設(shè)計(jì)模式
在這種不斷優(yōu)化代碼,養(yǎng)成的良好編程習(xí)慣下,我寫(xiě)代碼時(shí),使用設(shè)計(jì)模式已經(jīng)變成了潛意識(shí)的行為,根本說(shuō)不出為什么要用這個(gè)設(shè)計(jì)模式,只因?yàn)橛X(jué)得這樣用才是最優(yōu)解,這就好比拳擊手,遇到攻擊時(shí)會(huì)潛意識(shí)的躲閃、反擊一樣,這就是不斷實(shí)戰(zhàn)、不斷訓(xùn)練的結(jié)果
我的所有開(kāi)源框架加起來(lái)每個(gè)月平均下載量在 5 萬(wàn)左右,每天都有各種 issue 向我飛來(lái),這些成千上萬(wàn)的使用者(監(jiān)督者),迫使我不斷地優(yōu)化自己的代碼,甚至連每個(gè)注釋我都精雕細(xì)琢
框架要做到滿(mǎn)足所有人的需求太難了,但只要你不斷優(yōu)化,能做到讓大部分人滿(mǎn)意,那對(duì)你的提升絕對(duì)是巨大的,而且你的編程習(xí)慣也會(huì)有巨大的飛躍
比如我寫(xiě)注釋的編程習(xí)慣培養(yǎng)起來(lái)后,我的每個(gè)開(kāi)源框架,都寫(xiě)了大量的注釋?zhuān)枋龅姆浅T敿?xì),保證大部分人都能明白原理,但還是有很多人跑過(guò)來(lái)問(wèn)我文檔和注釋上已經(jīng)寫(xiě)了的問(wèn)題
我真的是吐血,兄弟,我真不想回答,你殺了我好吧 …
一個(gè)好的習(xí)慣,堅(jiān)持一天,就往目標(biāo)前進(jìn)一步
一個(gè)壞的習(xí)慣,持續(xù)一天,也就浪費(fèi)一天時(shí)間
我做開(kāi)源三年時(shí)間改掉了我很多不好的編程習(xí)慣,讓我進(jìn)步飛速,所以我感謝開(kāi)源。
我也鼓勵(lì)更多的人積極參與開(kāi)源,讓別人受益的同時(shí),別人也讓你不斷進(jìn)步。
當(dāng)然做開(kāi)源,并不只是代碼寫(xiě)的好,就能收獲大量的 star,他還需要綜合性的能力,比如框架定位、產(chǎn)品需求分析、運(yùn)營(yíng)、推廣等很多東西,其中最重要的就是持續(xù)維護(hù)。
全程面授,不高薪都難
申請(qǐng)成功后,我們將在24小時(shí)內(nèi)與您聯(lián)系
招生熱線(xiàn): 4008-0731-86 / 0731-82186801
學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)
Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有
湘ICP備14017520號(hào)-3