成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

函數設計心得:盡量避免布爾型參數

開發 前端
我認為,這個參數應該被設計為一個 DWORD 或者,如果更優雅一些的話,應該設計為一個枚舉,類似于:EVENTTYPE_AUTORESET 和 EVENTTYPE_MANUALRESET,這樣就一眼可以看出來參數的含義了。

通常來說,我認為在設計一個函數原型的時候,應該盡量避免使用布爾類型的參數,除非函數名稱能十分清楚的將這個參數的意思表達出來。

我并沒有想教你做事,但是請聽我細說

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

另外一個是 ShowScrollBar 的最后一個參數,它也是一個布爾型的。它的含義也十分明顯,如果傳入 TRUE,則表明將會顯示滾動條,如果傳入 FALSE,則會將滾動條隱藏。

這兩個例子中,布爾型參數的含義都清楚的體現在了函數的名稱中,是一個良好設計。

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

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

我認為,這個參數應該被設計為一個 DWORD 或者,如果更優雅一些的話,應該設計為一個枚舉,類似于:EVENTTYPE_AUTORESET 和 EVENTTYPE_MANUALRESET,這樣就一眼可以看出來參數的含義了。

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

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

總結

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

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2010-11-18 10:22:58

職場

2023-11-01 13:32:42

Go代碼

2024-03-25 10:00:00

C++編程else

2012-06-27 10:29:20

imo即時通訊

2025-05-28 03:20:00

布爾值編程True

2009-08-24 17:27:05

C#泛型應用

2024-01-23 11:21:24

2023-02-10 10:14:59

普通索引唯一索引

2024-10-25 16:07:39

Python函數

2023-11-02 21:11:11

JavaScript設計模式

2021-05-20 08:51:33

設計驅動數據庫

2021-08-03 07:51:43

Java 8 函數接口

2019-06-26 00:19:48

物聯網設計物聯網IOT

2014-08-13 15:55:17

Web響應式設計design

2009-08-24 14:51:25

C# 泛型泛型類型

2009-09-27 11:09:42

API設計

2016-11-28 09:06:45

前端系統開發

2009-08-25 13:57:09

C#泛型集合類型

2022-06-22 05:42:32

數據庫事務處理分析查詢

2019-11-21 08:51:56

Java異常控制流
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产天堂 | 日韩国产三区 | 日本五月婷婷 | 国产伦精品一区二区三区高清 | 中文字幕在线观看一区二区 | 天天澡天天狠天天天做 | 欧美精品久久久 | www日本高清视频 | 免费看国产a | 国产在线精品一区二区三区 | 欧美精品一区三区 | 国产精品久久久亚洲 | 国产乱码精品一区二区三区中文 | 国产精品美女久久久久aⅴ国产馆 | 99精品一区二区三区 | 亚洲午夜av| 午夜久久久 | 日韩a在线 | 一区二区三区四区国产 | 日韩视频在线一区二区 | 91精品国产91久久久久久最新 | 中文字幕在线中文 | 国产伦精品一区二区三区精品视频 | 日韩视频在线免费观看 | 亚洲视频免费观看 | 精品视频一区在线 | 成人午夜精品 | 一区二区三区在线 | 国产精品日韩一区二区 | 中文字幕久久精品 | 成人1区2区 | 国产亚洲区| 91成人精品 | 女朋友的闺蜜3韩国三级 | 亚洲导航深夜福利涩涩屋 | 一区在线免费视频 | 人成在线视频 | 国产91丝袜在线熟 | 伊人在线 | 天天综合网7799精品 | 午夜小电影|