子程序規劃好,註釋寫的少

在我們的一個完整的程序中,我們會創建許多的子程序,把他們拼湊在一起並且有序的調用,這樣才完成了一個完整功能的程序。這時我們該如何寫子程序?什麼時候應該寫子程序呢?以及我們應該從哪些方面考慮子程序?這篇文章就和大家聊一聊子程序那點事。

首先我們可以想一下有哪些理由是我們應該創建子程序的。

降低複雜度

創建子程序的一個最重要的原因就是為了降低程序的複雜度,可以通過創建子程序來隱藏一些信息,這樣就不必再去考慮這些信息了。當然,在你編寫子程序時是要考慮的。而且這些子程序的使用,我們是不必關心內部實現的。這時子程序的抽象能力就非常關鍵,如果我們缺少這種能力,我們管理複雜的程序是非常困難的。

當內部循環條件或者判斷的嵌套層次很深時,就意味著需要從子程序中提取出新的子程序了,把嵌套的部分提取出來形成一個獨立的子程序,可以降低外圍程序的複雜度。

避免代碼重複

當然,創建子程序的最普遍的原因是為了避免代碼重複。事實上,如果在兩段子程序內編寫相似的代碼,就意味著代碼分解出現了差錯。這時,我們就應該將相似代碼抽離出來,形成新的子程序。這樣,在其他子程序中就可以調用同一個子程序,而且在這個子程序有修改時,只需要修改一處就好了。這樣也更加可靠。

避免順序執行

比如一個程序,先是從用戶那裡讀取數據,然後在從另外的文件讀取輔助數據,那麼這兩個功能的子程序不應該依賴另外一個子程序是否已經執行,把這種信息隱藏起來,比讓他們在系統內到處分散要好很多。

移植性更高

可以使用子程序來隔離程序中不可移植的部分,從而明確識別和隔離未來的移植工作。簡單來說,同樣一個子程序,我們可以拿到多個地方使用,當然有時也是需要改動一點。

便於查找性能瓶頸

當我們使用多個子程序,我們檢查程序的性能時就可以很方便的找到問題所在,找到那個子程序慢就優化哪個。同時在一處優化,就能到處使用。

舉一個最簡單的例子,我們有一個需求,需要將商品打7.5折,我們通常的做法是將價格乘以0.75就ok了,這時我建議大家將這個操作封裝成一個子程序,同時子程序的命名要見名知意,這樣別人看到代碼時很明確的就知道這個是打折,而不會不明白為什麼要乘以7.5。這樣可讀性提升的不是一點半點,如果代碼中都是基本的循環、判斷等待,這樣看起來和彙編語言是沒有區別的。但是如果能用好的函數名封裝起來,拆解成合適的子程序,那麼代碼看起來就像和其他人對話一樣,想必大家都會喜歡後面這種感覺吧。

最主要一點,子程序規劃好,註釋寫的少。


分享到:


相關文章: