日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

代码整洁之道-函数

發布時間:2024/8/23 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码整洁之道-函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是一個好的函數或者叫方法,只要能讓函數明確的表達其意圖,讓讀者能夠一眼看出是一個怎樣的函數,其接收什么參數,返回什么結果,做了什么事情。能做到這,大概就能算作一個好的函數了,看上去很簡單。那么問題來了,如果做到這點呢?

1. 短小

想象一下,一個擊敗航的復雜函數和一個只有十幾行的函數,哪一個能夠讓人一眼看出其意圖并理解其行為呢?顯然是后者。當然,現在大多數語言完全可以將幾百行代碼寫到一行,那樣毫無格式的代碼只會讓人難以理解。

2.代碼塊和縮進

對于if、else等語句來說,其中包含的代碼塊最好只有一行,而這一行應該是一個函數調用語句,讓讀者可以一看看出其意圖

3.函數名

一個好的函數名十分重要,如何定義一個好的函數名呢?只可意會。如果一個函數,你僅看函數名,就能明白他是做了什么,返回什么,那它就是一個好的函數名了。

4.只做一件事

函數應該只做一件事,并且做好這一件事足矣。這個大家都承認吧,并且已經是一個共識了,但是說起來容易,做起來卻并沒有那么簡單。那么如何確保函數只做一件事呢?我們可以嘗試這在函數中再拆出一個函數來,當然,拆出的函數不能僅僅是將代碼搬過去,它應該有自己的責任,能夠對新的函數起一個好的函數名。如果不能再拆出這樣的函數,那么他應該可以了。

5. 函數參數

最理想的參數數量是0,其次遞增,3個參數就已經很多了。

就函數測試而言,沒有參數的函數測試簡直小菜一碟,若有了一個參數,就需要測試很多種組合,之后每多一個參數,測試的組合數量都是指數級增長。

就調用者而言,沒有參數的函數直接調用即可,而有了參數就需要理解每一個參數是什么,也增加了調用者的時間。

如果函數的參數中存在布爾值,不好意思,并不推薦這樣做,因為它明確的告訴調用者如果為true就會這樣做,如果為false就會那樣做。更好的做法是其拆分成兩個函數。

同時,如果一個函數需要三個以上的參數,就可以考慮將其中的一些參數封裝成類了。比如描繪笛卡爾坐標的x、y。

6.無副作用

副作用是函數的一個謊言,函數名承諾只做這一件事,但是他偷偷的做了其他事情。

比如,一個checkOrderStatus函數,明顯它是在檢查訂單狀態,但是如果它在檢查的同時對狀態進行了修改,就會讓人很困惑,甚至在排查錯誤的時候,看到這樣一個函數都不會點進去看。更好的做法是將其拆成兩個函數。

7. 每個函數一個抽象層級

說起來很簡單,我們在閱讀代碼時,往往采用自頂向下的順序來看,如果每個函數都只處理自己所在層級的邏輯,閱讀和維護就很舒服了。

這個雖然我覺得很有道理,但是我沒看懂啊。

。。。等等


那么問題來了,如何寫出符合這樣規范的代碼呢?

其實沒有必要再一開始寫的時候就按照規則來寫,那樣很容易打亂思路,甚至事倍功半。完全可以在寫完后在返回來認真打磨、拆解函數、修改名稱、消除重復代碼等.

總結

以上是生活随笔為你收集整理的代码整洁之道-函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。