3.檢查函數 if (!CheckStart()) return 的妙用 C#例子

在桌面/WPF 開發中,我們經常需要在按鈕事件里先判斷“能不能做”,再決定“怎么做”。如果校驗不過,就直接返回;校驗通過,才繼續執行業務邏輯。
今天分享一個極簡寫法:if (!CheckStart()) return;,只需一行即可把校驗與主流程解耦,讓代碼既干凈又易讀。


一、為什么推薦這種寫法?

  1. 省掉嵌套:傳統做法會把全部邏輯包在一層 if 里,縮進越來越深;用 return 提前終止,主流程保持“一馬平川”。

  2. 語義直觀:讀代碼時一眼就能知道——“校驗不過就拉閘”。

  3. 復用方便CheckStart() 里可以放任何通用規則,比如

    • 端口是否已打開

    • 授權是否有效

    • 配置是否完整
      需求變了,只改一處即可。


二、示例

事件觸發后,先執行 CheckStart() 進行一次性前置檢查:

  • 若返回 false,立即中斷流程;

  • 若返回 true,繼續后續主邏輯。

private void Button_RFSwitch(object sender, RoutedEventArgs e)
{// 1. 前置校驗:不通過直接返回if (!CheckStart()) return;// 2. 主流程:切換 RF 開關......
}

CheckStart()檢查函數的定義

        private bool CheckStart(){if (vSG == null){MessageBox.Show("未初始化");return false;}return true;}

三、小結

一行 if (!CheckStart()) return;,看似不起眼,卻是“防御式編程”的精髓:

  • 早失敗、早返回

  • 邏輯分層、職責單一

  • 代碼更短、可讀性更高

下次寫按鈕事件,不妨試試這個小技巧,讓你的 C# 代碼瞬間清爽起來!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914214.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

炎熱工廠救援:算法打造安全壁壘

高溫天氣下智慧工廠:算法賦能,安全救援無憂背景:極端高溫下工廠的嚴峻挑戰近年來,極端高溫天氣頻發,部分地區氣溫接近甚至超過50℃。在這樣酷熱的環境中,工廠面臨著諸多嚴峻問題。一方面,高溫容…

pgsql模板是什么?

查找所有的數據庫 select datname from pg_database運行該命令后,我們會發現其中出現了一些其它的數據庫接下來,我們分析 template0 和 template1 的作用。template1 template1 是 PostgreSQL 默認用于創建新數據庫的模板。當執行 CREATE DATABASE new_d…

LLM 不知道答案,但是知道去調用工具獲取答案?

思考: LLM 自己“不知道”某個事實性問題的答案,但仍然能“知道”去調用工具獲取正確答案,這聽起來確實有點像個悖論該內容觸及了大型語言模型(LLM)的核心局限性以及(Agents)的智能所在。實際上…

2025年7月11日學習筆記一周歸納——模式識別與機器學習

2025年7月11日學習筆記&一周歸納——模式識別與機器學習一.一周工作二.我的一些筆記匯總三.發現的一些新的學習資料和愛用好物1.百度網盤AI筆記:2.b站資料:3.聽說的一些好書:一.一周工作 本周學習了清華大學張學工汪小我老師的模式識別與…

LeetCode 138題解 | 隨機鏈表的復制

隨機鏈表的復制一、題目鏈接二、題目三、分析四、代碼一、題目鏈接 138.隨機鏈表的復制 二、題目 三、分析 數據結構初階階段,為了控制隨機指針,我們將拷貝結點鏈接在原節點的后面解決,后面拷貝節點還得解下來鏈接,非常麻煩。這…

【計算機存儲架構】分布式存儲架構

引言:數據洪流時代的存儲革命“數據是新時代的石油” —— 但傳統存儲正成為制約數據價值釋放的瓶頸核心矛盾:全球數據量爆炸增長:IDC預測2025年全球數據量將達175ZB(1ZB10億TB)傳統存儲瓶頸:單機IOPS上限僅…

【Linux-云原生-筆記】數據庫操作基礎

一、什么是數據庫?數據庫就是一個有組織、可高效訪問、管理和更新的電子化信息(數據)集合庫。簡單來說,數據庫就是一個高級的Excel二、安裝數據庫并初始化1、安裝數據庫(MySQL)dnf search一下mysql數據庫的…

HarmonyOS中各種動畫的使用介紹

鴻蒙(HarmonyOS)提供了豐富的動畫能力,涵蓋屬性動畫、顯式動畫、轉場動畫、幀動畫等多種類型,適用于不同場景的交互需求。以下是鴻蒙中各類動畫的詳細解析及使用示例:1. 屬性動畫(Property Animation&#…

CSP-S 模擬賽 10

T1 洛谷 U490727 返鄉 思路 首先要意識到一個問題,就是如果所有人總分一定,那么是不會出現偏序的。 可以感性理解一下,就是對于 i,ji, ji,j, 若 ai≤aj,bi≤bja_i \leq a_j, b_i \leq b_jai?≤aj?,bi?≤bj?,那么…

CMD,PowerShell、Linux/MAC設置環境變量

以下是 CMD(Windows)、PowerShell(Windows)、Linux/Mac 在 臨時/永久 環境變量操作上的對比表格:環境變量操作對照表(CMD vs PowerShell vs Linux/Mac)操作CMD(Windows)P…

MySQL(131)如何解決MySQL CPU使用率過高問題?

解決MySQL CPU使用率過高的問題需要從多個方面進行排查和優化,包括查詢優化、索引優化、配置優化和硬件資源的合理使用等。以下是詳細的解決方案和相應的代碼示例。 一、查詢優化 1. 檢查慢查詢 使用MySQL的慢查詢日志來找到執行時間長的查詢。 SET GLOBAL slow_que…

docker基礎與常用命令

目錄 一.docker概述 1.docker與虛擬機區別 2.Linux 六大命名空間 3.Docker 的核心技術及概念 二.docker部署安裝 三.docker常用命令 1.搜索鏡像 2.獲取鏡像 3.查看鏡像信息 4.添加鏡像標簽 5.刪除鏡像 6.存出與載入鏡像 7.上傳鏡像 8.創建容器 9.查看容器狀態 1…

Cypress與多語言后端集成指南

Cypress 簡介 基于 JavaScript 的前端測試工具,可以對瀏覽器中運行的任何內容進行快速、簡單、可靠的測試Cypress 是自集成的,提供了一套完整的端到端測試,無須借助其他外部工具,安裝后即可快速地創建、編寫、運行測試用例,且對每一步操作都支持回看不同于其他只能測試 UI…

計算機畢業設計ssm基于JavaScript的餐廳點餐系統 SSM+Vue智慧餐廳在線點餐管理平臺 JavaWeb前后端分離式餐飲點餐與桌臺調度系統

計算機畢業設計ssm基于JavaScript的餐廳點餐系統0xig8788(配套有源碼 程序 mysql數據庫 論文) 本套源碼可以在文本聯xi,先看具體系統功能演示視頻領取,可分享源碼參考。掃碼點單、手機支付、后廚實時出票已經成為食客對餐廳的基本預期。傳統的…

wedo稻草人-----第32節(免費分享圖紙)

夸克網盤:https://pan.quark.cn/s/ce4943156861 高清圖紙源文件,需要的請自取

Jmeter函數的使用

函數名作用用法${__Random(,,)}${__RandomString(,,)}隨機生成一些東西${__Random(000,999,)} ${__Random(${test1},${test2},)}${__RandomString(${__Random(3,9,)},asdfghjkl,)}${__time(,)}獲取當前的時間戳,也可以定義格式${__CSVRead(,)}讀取CSV文件的格式&…

Windows 用戶賬戶控制(UAC)繞過漏洞

漏洞原理CVE-2021-31199 是一個 Windows 用戶賬戶控制(UAC)繞過漏洞,CVSS 3.1 評分 7.8(高危)。其核心原理如下:UAC 機制缺陷:Windows UAC 通過限制應用程序權限提升系統安全性,但某…

comfyUI-controlNet-線稿軟邊緣

{WebUI&comfyUI}∈Stable Diffuision,所以兩者關于ContrlNet的使用方法的核心思路不會變,變的只是comfyUI能夠讓用戶更直觀地看到,并且控制生圖的局部過程。 之前的webUI中涉及到ContrlNet部分知識:SD-細節控制-CSDN博客 概…

SOEM build on ubuntu

1.配置 soem2.編譯 soem3.結果4.記錄一下自己的開發環境家里臺式機

STM32--USART串口通信的應用(第一節串口通信的概念)

咱們今天呢給大家講解咱們 stm32 開發當中的串口的應用啊 , 串口這個專題呢啊是我們那 個學習上必須要掌握的一個外設串口有什么作用呢,其實在我們以后的這個開發程序當中,咱們可能經常需要用到一些調試 信息,對吧? 啊…