想要的都擁有,失去的都釋懷,2020鼠於你
內容目錄
1,寫代碼容易嗎2,設計模式3,軟件生命周期4,技術業務架構5,輪子6,開源7,真相
1,寫代碼容易嗎
代碼容易寫,也不容易寫。但做人不能一直太中立,那我選擇好代碼不容易寫吧。
比如會寫字,不一定能寫出詩歌詞賦。但你說寫字難嗎,對於牙牙學語時難的,對於現在的你,不難,只不過可能是自成一派,沒那么好看。代碼要能隨着業務成長,方便做出拆分合並更新等,好的代碼就要保證正確性前提下有更好的維護性。
2,設計模式
說到好代碼一般都會涉及設計模式,有些經驗的程序員已經不談設計模式了,因為慢慢都習以為常了,他們開始向架構看去。
模式就是發現一種可識別的規律,比如色彩模式、簡歷模版也算。模式往往和抽象思維有關,分析事物共性,抽取事物共同的部分來幫助人們認識規律。設計模式就是對事物的重新定位整合來解決問題的一種模版一種套路。它是成熟的解決方案,解決類似的問題。
《設計模式:可復用面向對象軟件的基礎》一書中描述了23種設計模式。分為三類,創建型結構型行為型,其實都是對對象生命周期的再拆分,把創建過程獨立出來,結構組合成功能,行為表達對象之間的交流,比如常用了觀察者模式。當然設計模式也不是銀彈,拆分會讓架構變得復雜,但靈活性提高了,主要應對需求的變化。需求總會變,拆分讓關注點分離,也慢慢架構產生了設計模式。
3,軟件生命周期
軟件生命周期中兩個重要的子周期就是開發和運行生命周期。前者為后者服務,結合運行生命周期來決定代碼如何組織編寫。軟件是對現實業務的模擬,虛擬化。運行生命周期就是對業務生命周期的模擬,當然外加上用戶訪問生命周期。所以如果一個甲方單位的業務組織越清晰,職責越明了,項目相對越容易做。
首先業務模型必須放在后台,用戶不去接觸的地方,好比你去飯店點餐,菜品的制作流程你是不知曉的,去銀行存錢,你也不用關心錢交給櫃員后去哪了,你只需關心你賬上余額。銀行櫃員就是對外服務的窗口,用戶訪問的地方,銀行為了效率可能會按業務划分不同的櫃台,存錢的一個,辦信用卡的一個,其他的一個這樣,以滿足不同的用戶訪問。然后業務模型的后面是倉儲用於存放狀態和數據,其實這就是典型的三層架構,想象一下銀行櫃台是各種服務接口,櫃台玻璃的后邊是各種的業務邏輯,再后面的防盜門后面就是金庫檔案。
用戶服務接口一方面要組合業務模型,一方面還要持久化數據,任務太多,代碼容易失控,開發人員容易996。這時可以針對用戶訪問生命周期再做拆分,比如分為業務獲取、業務訪問、業務保存等,也能提高開發的並行度。
4,技術業務架構
百科上已經總結的不錯了。技術就是通過人為的創造條件,讓指定的規律按照人類的意願發生。火的發現本是自然打雷閃電產生,當時人類只能靠不停地添加木材來保持火不熄滅。后來發現了鑽木取火,鑽木就是技術,取火就是業務了。所謂業務,就是要解決人類的問題,目的是為了支撐人類自身的生命周期,使人類獲得利益。
技術出現后也就會形成相應的工具。用雙手快速轉動木棍取火是需要很大的力氣和速度的,體質差的人壓根生不起來火。就有人采用弓弦來提高轉動速度,所以在發現鑽木效率不高時,人類對轉動生命周期進行拆分,改進轉動方式,一只手負責往下壓,一只手負責轉動,兩手的分工產生了架構,拆分形成架構。和企業組織架構一樣,企業初期可能只有CEO大小事物全權負責,后面生長為有CTO,運營,人力,研發等組織結構。
5,輪子
首先如果你的軟件系統沒有分層,那也就沒有所謂的輪子,開源世界gayhub對你是沒有什么意義的。只有在拆分過程中,才能去匹配是否有恰當的工具輪子,如果拆分到某一層級發現還是沒有輪子,就要考慮要不要造輪子了,如果有輪子的功能大於當前拆分的,就看維護這個輪子值不值當了。想敲釘子沒有找到錘子時,但發現了高跟鞋,勉強也能敲一敲,但高跟鞋比錘子又昂貴又易耗。如果剛好有恰當的輪子,那可以開開心心安裝到自己的系統中,運行過程中發現輪子有些缺陷,着手維護它,就像汽車輪子,你發現每次制動時總會滑行很遠,容易撞到,你就可以給它加上一個卡鉗制動系統。拆分出來的問題和技術相匹配時,就是最完美的。比如有日志服務,權限管理等。
6,開源
上面提到的輪子,有開源的,當然也有閉源的。有些用已有的或自創輪子結合業務痛點打造新的氪金輪子來走商業模式,這種科研比較多,因為科研人員既是業務人員也是研發人員。那另一部分人為啥願意把代碼開源出來呢。
首先代碼並不是軟件生命周期的核心,運行生命周期和用戶訪問生命周期才是。沒有公司把運營體系開源出來,這部分才是核心。開源代碼就像寫書,你看了也不一定能和作者思想一致,只是代碼運行在機器中,書籍運行在腦子里。生而為人,千奇百怪,我們讀書是為了能想到作者是如何思考的。源代碼理解作者的設計思想,從理解作者面對的問題入手,讓代碼運行在腦子里。技術也是需要環境配套和人的配套。另一方面,開源作者也希望讓全球開發者參與到自己項目的開發中,這樣整個項目的研發體系就變得更大了,集思廣益。
7,真相
其實也並沒有說明如何寫好代碼?如何練一手好字,當然不是程序員喜愛的Consola和微軟雅黑,程序員手寫字也都自成一派。我們小時候練字會先去臨摹,掌握每個字的筆鋒走勢。如何寫一篇好文章,各種修辭手法套路,也就是設計模式,它可能沒有白話文那么好懂,但很優美,也可以在合適的地方用其他手法代替。當然白話文也是一種風格。
平常積極心,現在獲取知識極其容易,也極其容易焦慮。盡量先把自己的一畝三分地種好,再去刨別人家的地。販賣焦慮和焦慮的也可能是同一個人。焦慮會是向上的動力,但如果只是販賣給你的,那往往這種動力不會持久,一旦沒有焦慮的供給,你就會焦慮“我現在該焦慮點啥啊”。滋生自己向上而生的力量,那種也許不是很強大,但會一股一股涌出的小漣漪,才是平常積極心態在水面上的掙扎,倘若那股力量比較強大,必定也有死磕的決心,何不放手一搏,翻江倒海。