在桌面/WPF 开发中,我们经常需要在按钮事件里先判断"能不能做",再决定"怎么做"。如果校验不过,就直接返回;校验通过,才继续执行业务逻辑。
今天分享一个极简写法:if (!CheckStart()) return;
,只需一行即可把校验与主流程解耦,让代码既干净又易读。
一、为什么推荐这种写法?
-
省掉嵌套 :传统做法会把全部逻辑包在一层
if
里,缩进越来越深;用return
提前终止,主流程保持"一马平川"。 -
语义直观:读代码时一眼就能知道------"校验不过就拉闸"。
-
复用方便 :
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# 代码瞬间清爽起来!