日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

來源: 責(zé)編: 時間:2023-10-27 09:15:08 284觀看
導(dǎo)讀通常來說,我認(rèn)為在設(shè)計一個函數(shù)原型的時候,應(yīng)該盡量避免使用布爾類型的參數(shù),除非函數(shù)名稱能十分清楚的將這個參數(shù)的意思表達出來。我并沒有想教你做事,但是請聽我細說先舉兩個正面的例子,有一個 API 函數(shù) EnableWindow,它用

通常來說,我認(rèn)為在設(shè)計一個函數(shù)原型的時候,應(yīng)該盡量避免使用布爾類型的參數(shù),除非函數(shù)名稱能十分清楚的將這個參數(shù)的意思表達出來。e8x28資訊網(wǎng)——每日最新資訊28at.com

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

先舉兩個正面的例子,有一個 API 函數(shù) EnableWindow,它用來啟用或禁用一個窗口。它的第二個參數(shù)是一個布爾型參數(shù),如果此參數(shù)傳入 TRUE,則調(diào)用此函數(shù)會將指定的窗口啟用,傳入 FALSE,則禁用窗口。e8x28資訊網(wǎng)——每日最新資訊28at.com

另外一個是 ShowScrollBar 的最后一個參數(shù),它也是一個布爾型的。它的含義也十分明顯,如果傳入 TRUE,則表明將會顯示滾動條,如果傳入 FALSE,則會將滾動條隱藏。e8x28資訊網(wǎng)——每日最新資訊28at.com

這兩個例子中,布爾型參數(shù)的含義都清楚的體現(xiàn)在了函數(shù)的名稱中,是一個良好設(shè)計。e8x28資訊網(wǎng)——每日最新資訊28at.com

但下面的例子就沒那么顯而易見了。e8x28資訊網(wǎng)——每日最新資訊28at.com

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

我認(rèn)為,這個參數(shù)應(yīng)該被設(shè)計為一個 DWORD 或者,如果更優(yōu)雅一些的話,應(yīng)該設(shè)計為一個枚舉,類似于:EVENTTYPE_AUTORESET 和 EVENTTYPE_MANUALRESET,這樣就一眼可以看出來參數(shù)的含義了。e8x28資訊網(wǎng)——每日最新資訊28at.com

更加糟糕的是,CreateEvent這個函數(shù)中,總共有兩個布爾型參數(shù),你需要弄明白這些布爾值的含義,還得小心不要記錯順序了,這可太糟了。e8x28資訊網(wǎng)——每日最新資訊28at.com

另外一個反面例子是:StreamReader(Stream, bool) 這個函數(shù),我想問問聰明的你,如果先不看函數(shù)文檔的話,你能猜到它的第二個參數(shù)是什么意思嗎?e8x28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

以上只是我的個人看法,怎么設(shè)計你的函數(shù)害得你自己決定。
但,為什么不讓生活變得更美好一些呢?
幫助他人(你代碼的閱讀者),善待自己(三個月后的自己)。e8x28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15324-0.html函數(shù)設(shè)計心得:盡量避免布爾型參數(shù)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 認(rèn)識一些常見的Spring Boot內(nèi)置Health Indicator

下一篇: 深入理解并發(fā)編程藝術(shù)之JVM內(nèi)存模型

標(biāo)簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 天貓精靈Sound Pro體驗:智能音箱沒有音質(zhì)?來聽聽我的

    這幾年除了手機作為智能生活終端最主要的核心之外,第二個可以成為中心點的產(chǎn)品是什么?——是智能音箱。 手機在執(zhí)行命令的時候有兩種操作方式,手和智能語音助手,而智能音箱只
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經(jīng)過去,最明顯的肯定就是大內(nèi)存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機器進行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 使用Webdriver-manager解決瀏覽器與驅(qū)動不匹配所帶來自動化無法執(zhí)行的問題

    1、前言在我們使用 Selenium 進行 UI 自動化測試時,常常會因為瀏覽器驅(qū)動與瀏覽器版本不匹配,而導(dǎo)致自動化測試無法執(zhí)行,需要手動去下載對應(yīng)的驅(qū)動版本,并替換原有的驅(qū)動,可能還
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學(xué)弟,最近學(xué)習(xí)的怎么樣啊 了不起學(xué)弟:最近學(xué)習(xí)的還不錯,每天都在學(xué)習(xí),每天都在進步! 了不起:那你最近學(xué)習(xí)的什么呢? 了不起學(xué)弟:最近在學(xué)習(xí)C
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 品牌洞察丨服務(wù)本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現(xiàn)“美團直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • AI藝術(shù)欣賞體驗會在上海梅賽德斯奔馳中心音樂俱樂部上演

    光影交錯的鏡像世界,虛實幻化的視覺奇觀,虛擬偶像與真人共同主持,這些場景都出現(xiàn)在2019世界人工智能大會的舞臺上。8月29日至31日,“AI藝術(shù)欣賞體驗會”在上海
Top 主站蜘蛛池模板: 黑山县| 大英县| 霍山县| 安阳县| 和硕县| 和田县| 大英县| 温宿县| 淮滨县| 鞍山市| 曲周县| 泸定县| 政和县| 多伦县| 文山县| 松桃| 上饶市| 英超| 嘉鱼县| 瓮安县| 玛纳斯县| 舞钢市| 东乡族自治县| 福海县| 昌乐县| 神农架林区| 区。| 北海市| 康乐县| 图木舒克市| 亚东县| 康马县| 宁化县| 遵义市| 岑溪市| 化德县| 濮阳县| 肇源县| 望城县| 乃东县| 抚顺市|