原文地址: https://juejin.cn/post/6844903793918738446
有人問我如何做好架構設計?怎樣靈活運用設計模式?我的回答是,你做不好這些只是因為你沒有養成一個良好的程式設計習慣
我為什麼寫這麼多開源框架,還長期保持維護?
除了我想讓更多人受益於開源外,還有一點就是,我想保持我良好的程式設計習慣
寫業務程式碼也可以保持良好的程式設計習慣啊
能,但是太慢!
寫業務時無法注意到的細節
在寫業務程式碼時,即使專案時間充裕,你也會忽略掉很多細節,而這些細節正是影響你進步速度的關鍵,但你自己卻很難察覺,在不知不覺間就對你的進階之路造成了很大的影響
所以你的進步速度非常之慢,做了多年也只是熟練而已,無法更進一步
業務程式碼和框架程式碼最直觀的差別就是,業務程式碼可以隨意修改,而框架程式碼,使用者不能直接修改
由於業務程式碼的修改不受限制,所以一有需求變動,你就直接通過修改問題程式碼的方式來快速解決問題,即使這個程式碼的變動非常頻繁,但你的第一反應卻不是通過程式碼設計的方式來解決後續的擴充套件問題,因為這看似一勞永逸的方式,會浪費你當下大量的時間
人類的潛意識會更注重當下付出的成本,而忽略掉未來會獲得的收益
因為你上面的編碼方式,所養成的不好的程式設計習慣,會讓你本能的不注重程式碼的耦合性、靈活性、可擴充套件性
所以即使你天天敲程式碼,你的進步也如此之慢,因為你平時就缺乏架構設計、程式碼設計的鍛鍊,日積月累,你也只是搬磚的速度比之前更快一點而已
寫開源框架時給你帶來的改變
這個時候如果有一個好的 leader 能每天 review 你的程式碼,還時常提醒你這些問題,只要你慢慢改成,並養成習慣,那你的進階之路也會十分順暢
但如此好的 leader 是可遇不可求的,那我們如果沒有一個好 leader,該如何養成一個好習慣呢?
我的建議就是做開源庫,而且儘量做開源框架,比如架構框架、UI 框架,網路框架、圖片框架,儘量少做開源 App(當然如果為了學習某項技術也是可以的)
因為開源 App 主要是幫助你和別人學習某些技術,也是有大量的業務程式碼存在的,無非就是用了一些新的技術,而且還是你一個人寫,有些細節你更不會考慮 …
而開源框架是拿給別人呼叫的,所以對程式碼質量要求更高,考慮的細節更多,對你的提升也越大
並且你的框架程式碼是放在伺服器上的,使用者無法修改你的程式碼,這就會強迫你更關注程式碼的耦合性、靈活性、可擴充套件性,甚至是你寫業務時根本不會注重的註釋和文件
因為使用者用得稍有不爽就會給你發起 issue,不斷地督促你優化你的程式碼、註釋、文件,不斷地幫助你培養一個良好的程式設計習慣
這就好比你有成百上千個好 leader 每天 review 你的程式碼,並指出你的問題,給予更好的建議,而且這些 leader 中絕對藏龍臥虎,這樣日積月累下去,你怎能不成長?
良好的程式設計習慣助你快速進步
我的很多程式設計習慣,經過不斷的糾錯,優化,糾錯,優化,已經深深的刻進我的腦子裡了
我框架用到的大多數設計模式,都不是我刻意去用的,都是遇到某些問題,或者使用者需要增加什麼功能,我為了不影響之前的版本,保證擴充套件性的前提下,去解決這些問題,而不得不去使用這些設計模式,很多情況下,程式碼已經寫完了,才知道,原來我用的是 xx 設計模式
在這種不斷優化程式碼,養成的良好程式設計習慣下,我寫程式碼時,使用設計模式已經變成了潛意識的行為,根本說不出為什麼要用這個設計模式,只因為覺得這樣用才是最優解,這就好比拳擊手,遇到攻擊時會潛意識的躲閃、反擊一樣,這就是不斷實戰、不斷訓練的結果
我的所有開源框架加起來每個月平均下載量在 5 萬左右,每天都有各種 issue 向我飛來,這些成千上萬的使用者(監督者),迫使我不斷地優化自己的程式碼,甚至連每個註釋我都精雕細琢
框架要做到滿足所有人的需求太難了,但只要你不斷優化,能做到讓大部分人滿意,那對你的提升絕對是巨大的,而且你的程式設計習慣也會有巨大的飛躍
比如我寫註釋的程式設計習慣培養起來後,我的每個開源框架,都寫了大量的註釋,描述的非常詳細,保證大部分人都能明白原理,但還是有很多人跑過來問我文件和註釋上已經寫了的問題
我真的是吐血,兄弟,我真不想回答,你殺了我好吧 …
一個好的習慣,堅持一天,就往目標前進一步
一個壞的習慣,持續一天,也就浪費一天時間
我做開源三年時間改掉了我很多不好的程式設計習慣,讓我進步飛速,所以我感謝開源
我也鼓勵更多的人積極參與開源,讓別人受益的同時,別人也讓你不斷進步
當然做開源,並不只是程式碼寫的好,就能收穫大量的 star,他還需要綜合性的能力,比如框架定位、產品需求分析、運營、推廣等很多東西,其中最重要的就是持續維護
我去年創新的新框架 AndroidAutoSize,上線一個月時間就 3k star,現在每個月有 2 萬以上的下載量,超過我之前的所有開源框架,這就是因為我之前所積累的開源經驗所賜,關於 Github 的運營之道後面我也會分享的
公眾號
掃碼關注我的公眾號 JessYan,一起學習進步,如果框架有更新,我也會在公眾號上第一時間通知大家
Hello 我叫 JessYan,如果您喜歡我的文章,可以在以下平臺關注我
- 個人主頁: jessyan.me
- GitHub: github.com/JessYanCodi…
- 掘金: juejin.cn/user/976022…
- 簡書: www.jianshu.com/u/1d0c0bc63…
- 微博: weibo.com/u/178626251…
-- The end