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

在桌面/WPF 开发中,我们经常需要在按钮事件里先判断"能不能做",再决定"怎么做"。如果校验不过,就直接返回;校验通过,才继续执行业务逻辑。

今天分享一个极简写法:if (!CheckStart()) return;,只需一行即可把校验与主流程解耦,让代码既干净又易读。


一、为什么推荐这种写法?

  1. 省掉嵌套 :传统做法会把全部逻辑包在一层 if 里,缩进越来越深;用 return 提前终止,主流程保持"一马平川"。

  2. 语义直观:读代码时一眼就能知道------"校验不过就拉闸"。

  3. 复用方便CheckStart() 里可以放任何通用规则,比如

    • 端口是否已打开

    • 授权是否有效

    • 配置是否完整

      需求变了,只改一处即可。


二、示例

事件触发后,先执行 CheckStart() 进行一次性前置检查:

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

  • 若返回 true,继续后续主逻辑。

cs 复制代码
private void Button_RFSwitch(object sender, RoutedEventArgs e)
{
    // 1. 前置校验:不通过直接返回
    if (!CheckStart()) return;

    // 2. 主流程:切换 RF 开关
    ......
}

CheckStart()检查函数的定义

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

三、小结

一行 if (!CheckStart()) return;,看似不起眼,却是"防御式编程"的精髓:

  • 早失败、早返回

  • 逻辑分层、职责单一

  • 代码更短、可读性更高

下次写按钮事件,不妨试试这个小技巧,让你的 C# 代码瞬间清爽起来!

相关推荐
九转成圣41 分钟前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio1 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
laowangpython1 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫1 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch1 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
软件技术NINI1 小时前
webkit简介及工作流程
开发语言·前端·javascript·udp·ecmascript·webkit·yarn
Brendan_0011 小时前
JavaScript的Stomp.over
开发语言·javascript·ecmascript
念2341 小时前
f5 shape分析
开发语言·javascript·ecmascript
苍穹之跃1 小时前
某量JS逆向
开发语言·javascript·ecmascript
思茂信息1 小时前
CST软件如何进行参数化扫描?
运维·开发语言·javascript·windows·ecmascript·软件工程·软件需求