1. 程式人生 > >如何寫好程式碼?

如何寫好程式碼?

想要的都擁有,失去的都釋懷,2020鼠於你

內容目錄

1,寫程式碼容易嗎2,設計模式3,軟體生命週期4,技術業務架構5,輪子6,開源7,真相

1,寫程式碼容易嗎

程式碼容易寫,也不容易寫。但做人不能一直太中立,那我選擇好程式碼不容易寫吧。
比如會寫字,不一定能寫出詩歌詞賦。但你說寫字難嗎,對於牙牙學語時難的,對於現在的你,不難,只不過可能是自成一派,沒那麼好看。程式碼要能隨著業務成長,方便做出拆分合並更新等,好的程式碼就要保證正確性前提下有更好的維護性。

2,設計模式

說到好程式碼一般都會涉及設計模式,有些經驗的程式設計師已經不談設計模式了,因為慢慢都習以為常了,他們開始向架構看去。

模式就是發現一種可識別的規律,比如色彩模式、簡歷模版也算。模式往往和抽象思維有關,分析事物共性,抽取事物共同的部分來幫助人們認識規律。設計模式就是對事物的重新定位整合來解決問題的一種模版一種套路。它是成熟的解決方案,解決類似的問題。
《設計模式:可複用面向物件軟體的基礎》一書中描述了23種設計模式。分為三類,建立型結構型行為型,其實都是對物件生命週期的再拆分,把建立過程獨立出來,結構組合成功能,行為表達物件之間的交流,比如常用了觀察者模式。當然設計模式也不是銀彈,拆分會讓架構變得複雜,但靈活性提高了,主要應對需求的變化。需求總會變,拆分讓關注點分離,也慢慢架構產生了設計模式。

3,軟體生命週期

軟體生命週期中兩個重要的子週期就是開發和執行生命週期。前者為後者服務,結合執行生命週期來決定程式碼如何組織編寫。軟體是對現實業務的模擬,虛擬化。執行生命週期就是對業務生命週期的模擬,當然外加上使用者訪問生命週期。所以如果一個甲方單位的業務組織越清晰,職責越明瞭,專案相對越容易做。

首先業務模型必須放在後臺,使用者不去接觸的地方,好比你去飯店點餐,菜品的製作流程你是不知曉的,去銀行存錢,你也不用關心錢交給櫃員後去哪了,你只需關心你賬上餘額。銀行櫃員就是對外服務的視窗,使用者訪問的地方,銀行為了效率可能會按業務劃分不同的櫃檯,存錢的一個,辦信用卡的一個,其他的一個這樣,以滿足不同的使用者訪問。然後業務模型的後面是倉儲用於存放狀態和資料,其實這就是典型的三層架構,想象一下銀行櫃檯是各種服務介面,櫃檯玻璃的後邊是各種的業務邏輯,再後面的防盜門後面就是金庫檔案。

使用者服務介面一方面要組合業務模型,一方面還要持久化資料,任務太多,程式碼容易失控,開發人員容易996。這時可以針對使用者訪問生命週期再做拆分,比如分為業務獲取、業務訪問、業務儲存等,也能提高開發的並行度。

4,技術業務架構

百科上已經總結的不錯了。技術就是通過人為的創造條件,讓指定的規律按照人類的意願發生。火的發現本是自然打雷閃電產生,當時人類只能靠不停地新增木材來保持火不熄滅。後來發現了鑽木取火,鑽木就是技術,取火就是業務了。所謂業務,就是要解決人類的問題,目的是為了支撐人類自身的生命週期,使人類獲得利益。

技術出現後也就會形成相應的工具。用雙手快速轉動木棍取火是需要很大的力氣和速度的,體質差的人壓根生不起來火。就有人採用弓弦來提高轉動速度,所以在發現鑽木效率不高時,人類對轉動生命週期進行拆分,改進轉動方式,一隻手負責往下壓,一隻手負責轉動,兩手的分工產生了架構,拆分形成架構。和企業組織架構一樣,企業初期可能只有CEO大小事物全權負責,後面生長為有CTO,運營,人力,研發等組織結構。

5,輪子

首先如果你的軟體系統沒有分層,那也就沒有所謂的輪子,開源世界gayhub對你是沒有什麼意義的。只有在拆分過程中,才能去匹配是否有恰當的工具輪子,如果拆分到某一層級發現還是沒有輪子,就要考慮要不要造輪子了,如果有輪子的功能大於當前拆分的,就看維護這個輪子值不值當了。想敲釘子沒有找到錘子時,但發現了高跟鞋,勉強也能敲一敲,但高跟鞋比錘子又昂貴又易耗。如果剛好有恰當的輪子,那可以開開心心安裝到自己的系統中,執行過程中發現輪子有些缺陷,著手維護它,就像汽車輪子,你發現每次制動時總會滑行很遠,容易撞到,你就可以給它加上一個卡鉗制動系統。拆分出來的問題和技術相匹配時,就是最完美的。比如有日誌服務,許可權管理等。

6,開源

上面提到的輪子,有開源的,當然也有閉源的。有些用已有的或自創輪子結合業務痛點打造新的氪金輪子來走商業模式,這種科研比較多,因為科研人員既是業務人員也是研發人員。那另一部分人為啥願意把程式碼開源出來呢。

首先程式碼並不是軟體生命週期的核心,執行生命週期和使用者訪問生命週期才是。沒有公司把運營體系開源出來,這部分才是核心。開原始碼就像寫書,你看了也不一定能和作者思想一致,只是程式碼執行在機器中,書籍執行在腦子裡。生而為人,千奇百怪,我們讀書是為了能想到作者是如何思考的。原始碼理解作者的設計思想,從理解作者面對的問題入手,讓程式碼執行在腦子裡。技術也是需要環境配套和人的配套。另一方面,開源作者也希望讓全球開發者參與到自己專案的開發中,這樣整個專案的研發體系就變得更大了,集思廣益。

7,真相

其實也並沒有說明如何寫好程式碼?如何練一手好字,當然不是程式設計師喜愛的Consola和微軟雅黑,程式設計師手寫字也都自成一派。我們小時候練字會先去臨摹,掌握每個字的筆鋒走勢。如何寫一篇好文章,各種修辭手法套路,也就是設計模式,它可能沒有白話文那麼好懂,但很優美,也可以在合適的地方用其他手法代替。當然白話文也是一種風格。

平常積極心,現在獲取知識極其容易,也極其容易焦慮。儘量先把自己的一畝三分地種好,再去刨別人家的地。販賣焦慮和焦慮的也可能是同一個人。焦慮會是向上的動力,但如果只是販賣給你的,那往往這種動力不會持久,一旦沒有焦慮的供給,你就會焦慮“我現在該焦慮點啥啊”。滋生自己向上而生的力量,那種也許不是很強大,但會一股一股湧出的小漣漪,才是平常積極心態在水面上的掙扎,倘若那股力量比較強大,必定也有死磕的決心,何不放手一搏,翻江倒海。