自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

函數(shù)設(shè)計(jì)心得:盡量避免布爾型參數(shù)

開發(fā) 前端
我認(rèn)為,這個(gè)參數(shù)應(yīng)該被設(shè)計(jì)為一個(gè) DWORD 或者,如果更優(yōu)雅一些的話,應(yīng)該設(shè)計(jì)為一個(gè)枚舉,類似于:EVENTTYPE_AUTORESET 和 EVENTTYPE_MANUALRESET,這樣就一眼可以看出來參數(shù)的含義了。

通常來說,我認(rèn)為在設(shè)計(jì)一個(gè)函數(shù)原型的時(shí)候,應(yīng)該盡量避免使用布爾類型的參數(shù),除非函數(shù)名稱能十分清楚的將這個(gè)參數(shù)的意思表達(dá)出來。

我并沒有想教你做事,但是請(qǐng)聽我細(xì)說

先舉兩個(gè)正面的例子,有一個(gè) API 函數(shù) EnableWindow,它用來啟用或禁用一個(gè)窗口。它的第二個(gè)參數(shù)是一個(gè)布爾型參數(shù),如果此參數(shù)傳入 TRUE,則調(diào)用此函數(shù)會(huì)將指定的窗口啟用,傳入 FALSE,則禁用窗口。

另外一個(gè)是 ShowScrollBar 的最后一個(gè)參數(shù),它也是一個(gè)布爾型的。它的含義也十分明顯,如果傳入 TRUE,則表明將會(huì)顯示滾動(dòng)條,如果傳入 FALSE,則會(huì)將滾動(dòng)條隱藏。

這兩個(gè)例子中,布爾型參數(shù)的含義都清楚的體現(xiàn)在了函數(shù)的名稱中,是一個(gè)良好設(shè)計(jì)。

但下面的例子就沒那么顯而易見了。

我們看看這個(gè)函數(shù) CreateEvent,它的第一個(gè)參數(shù)是布爾型的,但如果不查看函數(shù)的文檔,則開發(fā)者很難想象這個(gè)參數(shù)具體的作用是什么??戳宋臋n之后,才會(huì)明白:這個(gè)參數(shù)用來控制是否創(chuàng)建一個(gè)自動(dòng)重置的事件對(duì)象。更進(jìn)一步地,到底是傳入 TRUE 還是 FALSE 來創(chuàng)建一個(gè)自動(dòng)重置對(duì)象呢?每次當(dāng)我調(diào)用這個(gè)函數(shù)的時(shí)候,我都只能老老實(shí)實(shí)的翻開函數(shù)文檔認(rèn)真閱讀,才知道具體應(yīng)該傳入什么布爾值。

我認(rèn)為,這個(gè)參數(shù)應(yīng)該被設(shè)計(jì)為一個(gè) DWORD 或者,如果更優(yōu)雅一些的話,應(yīng)該設(shè)計(jì)為一個(gè)枚舉,類似于:EVENTTYPE_AUTORESET 和 EVENTTYPE_MANUALRESET,這樣就一眼可以看出來參數(shù)的含義了。

更加糟糕的是,CreateEvent這個(gè)函數(shù)中,總共有兩個(gè)布爾型參數(shù),你需要弄明白這些布爾值的含義,還得小心不要記錯(cuò)順序了,這可太糟了。

另外一個(gè)反面例子是:StreamReader(Stream, bool) 這個(gè)函數(shù),我想問問聰明的你,如果先不看函數(shù)文檔的話,你能猜到它的第二個(gè)參數(shù)是什么意思嗎?

總結(jié)

以上只是我的個(gè)人看法,怎么設(shè)計(jì)你的函數(shù)害得你自己決定。
但,為什么不讓生活變得更美好一些呢?
幫助他人(你代碼的閱讀者),善待自己(三個(gè)月后的自己)。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2010-11-18 10:22:58

職場(chǎng)

2023-11-01 13:32:42

Go代碼

2024-03-25 10:00:00

C++編程else

2012-06-27 10:29:20

imo即時(shí)通訊

2009-08-24 17:27:05

C#泛型應(yīng)用

2024-01-23 11:21:24

2024-10-25 16:07:39

Python函數(shù)

2023-02-10 10:14:59

普通索引唯一索引

2023-11-02 21:11:11

JavaScript設(shè)計(jì)模式

2021-08-03 07:51:43

Java 8 函數(shù)接口

2021-05-20 08:51:33

設(shè)計(jì)驅(qū)動(dòng)數(shù)據(jù)庫

2009-09-27 11:09:42

API設(shè)計(jì)

2009-08-24 14:51:25

C# 泛型泛型類型

2009-08-25 13:57:09

C#泛型集合類型

2016-11-28 09:06:45

前端系統(tǒng)開發(fā)

2019-08-29 08:58:24

Python布爾型編程語言

2014-08-13 15:55:17

Web響應(yīng)式設(shè)計(jì)design

2019-06-26 00:19:48

物聯(lián)網(wǎng)設(shè)計(jì)物聯(lián)網(wǎng)IOT

2022-06-22 05:42:32

數(shù)據(jù)庫事務(wù)處理分析查詢

2018-07-19 10:35:12

機(jī)器學(xué)習(xí)數(shù)據(jù)平臺(tái)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)