卫语句

Java中的卫语句 在Java中,“卫语句”(guard statement)是一种用于在代码执行之前检查条件的控制语句。它们通常与条件语句(如if语句)结合使用,用于提前终止代码块的执行。卫语句的作用是在代码执行之前检查一些前提条件,如果这些条件不满足,则立即跳出当前代码块,避免执行后续的代码。这样可以提高代码的可读性和可维护性,同时减少不必要的计算或错误情况的发生。return;// 卫语句:如果num小于0,则立即跳出方法// 执行一些针对正数的处理逻辑。 阅读详情

大量的嵌套条件分支是很容易让人望而却步的代码,我们应该极力避免这种代码的出现。尽管结构化原则一直在说一个函数只能有一个出口,但是在大量的嵌套条件分支下,让我们忘了这所谓的规则吧。 有一个专业名词叫卫语句,可以治疗这种恐怖的嵌套条件语句。它的核心思想是,将不满足某些条件的情况放在方法前面,并及时跳出方法,以免对后面的判断造成影响,经过这项手术的代码看起来会非常的清晰。

1.使用卫语句取代嵌套表达式

函数中的条件逻辑使人难以看清正常的执行途径。使用卫语句表现所有特殊情况。

动机:条件表达式通常有2种表现形式。第一:所有分支都属于正常行为。第二:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况。

       这2类条件表达式有不同的用途。如果2条分支都是正常行为,就应该使用形如if…..else…..的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。

       Replace Nested Conditional with Guard Clauses (以卫语句取代嵌套条件表达式)的精髓是:给某个分支以特别的重视。它告诉阅读者:这种情况很罕见,如果它真的发生了,请做一些必要的整理工作,然后退出。

       “每个函数只能有一个入口和一个出口”的观念,根深蒂固于某些程序员的脑海里。现今的编程语言都会强制保证每个函数只有一个入口,至于“单一出口”规则,其实不是那么有用。保持代码清晰才是最关键的:如果单一出口能使这个函数更清晰易读,那么就使用单一出口;否则就不必这么做。

做法:1、对于每个检查,放进一个卫语句。卫语句要不就从函数返回,要不就抛出一个异常。

       2、每次将条件检查替换成卫语句后,编译并测试。如果所有卫语句都导致相同的结果,请使用 Consolidate Conditional Expression (合并条件表达式)。


2.卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句.

3有时候条件式可能出现在嵌套n次才能真正执行,其他分支只是简单报错返回的情况,对于这种情况,应该单独检查报错返回的分支,当条件为真时立即返回,这样的单独检查就是卫语句(guard clauses).卫语句可以把我们的视线从异常处理中解放出来,集中精力到正常处理的代码中。

例如下列代码:

- (void)showName:(NSString *)name

{

    if (name != nil)

    {

        if (name.length >0)

        {

            NSLog(@"showName");

        }

        else

        {

            NSLog(@"name.length is zero");

        }

    }

    else

    {

        NSLog(@"name is nil");

    }

}

我们可以用卫语句来使得主体逻辑更加清晰

- (void)showName:(NSString *)name

{

    if (name == nil)

    {

        NSLog(@"name is nil");

        return;

    }


    if (name.length ==0)

    {

        NSLog(@"name.length is zero");

        return;

    }


    NSLog(@"showName");

}


博图HMI多语言文本列表一键生成攻略:从Excel模板到TIA Portal的完整流程 本文详细介绍了如何利用Excel模板和TIA Portal API实现博图HMI多语言文本列表的一键生成。通过标准化Excel模板设计、解析TIA Portal的XML结构,并结合C#代码实现自动化导入,大幅提升多语言项目的开发效率。特别适用于需要支持多语言版本的自动化设备HMI界面开发。 阅读详情

相关推荐

C#开发者必备:VSPD虚拟串口快速配置指南(附汉化教程)

本文为C#开发者提供了VSPD虚拟串口的快速配置与汉化教程。详细介绍了如何安装、汉化VSPD,并创建稳定的虚拟串口对,重点讲解了如何将其集成到C#开发工作流中,使用SerialPort类进行数据通信测试、协议模拟及故障排查,有效提升硬件通信开发的效率。

weixin_29224529的博客 256

【详解】什么是卫语句?作用是什么?

1.什么是卫语句 卫语句就是把复杂的条件表达式拆分成多个条件表达式,减少嵌套。嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句。 卫语句将某些关键条件优先判断,简化程序流程走向。卫语句往往用于对 if 条件嵌套代码的优化。 在《阿里巴巴Java开发手册》中强制规定:超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现,其中卫语句即代码逻辑先考虑失败、异常、中断...

CodingLJ 3万+

Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决

本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。

f6g7h8i9j的博客 190

什么是卫语句

什么是卫语句   卫语句是一种改善嵌套代码的一种代码。将经过多级嵌套的代码使用卫语句优化之后的代码嵌套层数降低,因此改使用卫语句能降低代码的复杂程序。   卫语句往往用于对 if 条件嵌套代码的优化。比如,下面的 Java 代码的嵌套层数是 3(方法本身也算一层)。 public int fun(boolean isTrue, int aPara, int bPara) { if (isTrue) { // TODO if (aPara > 0) { return aPara

暗诺星刻的博客 2万+

DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目

简单介绍DASH的起源与发展、MPD文件简要解析、相关项目,以及常见流媒体协议的比较

farewellyi的博客 6880

告别Selenium!纯Python+Requests搞定微信视频号登录Cookie(附完整代码与避坑指南)

本文详细介绍了如何利用纯Python和Requests库实现微信视频号的自动化登录,替代传统的Selenium方案。通过解析HTTP请求交互流程,提供完整的代码实现和避坑指南,显著提升爬虫效率和隐蔽性,适用于轻量化爬虫开发。

weixin_30642561的博客 310

编程技巧大揭秘:如何使用卫语句改善代码结构

本文主要介绍了什么是卫语句,以及如何通过使用卫语句改善代码结构。

【活用数据】 2081

Win10平台下QT6.9.0 OpenCV 4.10.0从入门到精通

我最近开发一个视觉项目,我们从0开始记录在windows 10下 用QT6.9+OpenCV 4.10.0搞定整个项目的开发过程。以抛砖引玉,大家共同进步。

fds111111的博客 1711

卫语句:简化条件逻辑的有效方法

文章目录卫语句示例1示例2总结 卫语句 在代码中存在过多条件语句的时候,建议把多层条件语句改为卫语句或其他方式 推荐尽量少用else, if-else的方式可以改写成: if(condition){ ... return obj; } // 接着写else的业务逻辑代码; 卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then...

Clear Code 6804

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 856

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6507

4.5 以卫语句取代嵌套条件式

【1】原代码 1 double GetPayAmount() 2 { 3 double result; 4 if (IsDead()) 5 { 6 result = DeadAmount(); 7 } 8 else 9 { 10 if (IsSeparated()) 11 ...

weixin_34242819的博客 980

Python爬虫实战:利用最新技术爬取B站视频信息

本文详细介绍了如何使用Python最新技术构建一个功能完善的B站视频信息爬虫。我们从基础爬取开始,逐步深入到反反爬策略、异步处理、数据存储和分析等高级主题。更智能的反反爬策略:使用机器学习识别验证码更高效的分布式架构:结合Kubernetes实现弹性伸缩实时数据管道:将爬取的数据实时推送到数据分析平台多平台支持:扩展支持抖音、YouTube等其他视频平台。

2201_76125261的博客 1040

java 卫语句_卫语句

阿里巴巴Java开发手册——“多层条件语句建议使用卫语句、策略模式、状态模式等方式重构”。卫语句把复杂的条件表达式拆分成多个条件表达式下面是部分特殊车牌的校验代码public static String getLicensePlateColor(String licensePlate) {/*** 默认车牌颜色为蓝色*/String color = PmDicConstant.DIC_KEY_PM...

weixin_31049801的博客 577

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

编程中的卫语句

什么是卫语句 在《阿里巴巴Java开发手册》中提到,多层条件语句建议使用卫语句、策略模式、状态模式等方式重构。 那么,什么是卫语句呢? 在中文维基百科中是这样介绍的 在计算机程序设计中,卫(guard)是布尔表达式,其结果必须为真,程序才能执行下去。卫语句(guard code或guard clause)用于检查先决条件。卫语句的用途,例如: 引用(reference)使用前检查是否为空引用; 处置模式使用一个布尔域,使得释放资源操作成为幂等运算,即多次释放资源等效于只释放一次。 卫语句可用于子进程的提前

Holon_的博客 4244

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C语言 —卫语句

函数中的条件逻辑使人难以看清正常的执行途径。使用卫语句表现所有特殊情况。 动机:条件表达式通常有2种表现形式。第一:所有分支都属于正常行为。第二:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况。 这2类条件表达式有不同的用途。如果2条分支都是正常行为,就应该使用形如if……else……的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。 Replace Nested Conditional with Guard C.

EmbeddedCoder 的优快云博客 1993

java 卫语句_Java规约-卫语句(guard clauses)

Java规约-卫语句(guard clauses) 2017-9-29 / 0评 / 码移动设备上继续阅读 首先说一下“卫语句”是什么东东?卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if-then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句.其实几行简单的代码说明一下:if(obj != null...

weixin_42339991的博客 2820

java基础-卫语句

在《阿里巴巴Java开发手册》中强制规定:避免后续代码维护困难,请勿超过3层。如果超过3层的if-else的逻辑判断代码可以使卫语句、策略模式、状态模式等来实现。卫语句貌似有点概念,但记不清了,所以在这回顾一下。至于策略模式和状态模式有空也整理整理。 概念 卫语句(guard clauses)就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if-then-else...

weixin_33777877的博客 4945

卫语句取代if嵌套

用卫语句取代if嵌套 在代码中存在过多条件语句的时候,建议把多层条件语句改为卫语句或其他方式 1、源代码: double GetPayAmount() { double result; if (IsDead()) { result = DeadAmount(); } else { if (IsSeparated()) { ...

ternence_hsu的博客 2207

卫语句,多层循环优化

【推荐】推荐尽量少用else, if-else的方式可以改写成: if(condition){ ... return obj; } // 接着写else的业务逻辑代码; 说明:如果非得使用if()...else if()...else...方式表达逻辑,【强制】请勿超过3层,超过请使用状态设计模式。 正例:逻辑上超过3层的if-else代码可以使用卫语句,或者状态模式来实现。

走过程序员的路 8829

什么是卫语句?卫语句主要被用来解决什么问题?怎么编写卫语句?

卫语句是一种通过提前返回处理异常条件的编程技巧,能有效减少嵌套层级。它通过在函数入口处使用简短的条件判断拦截错误路径,使主流程更清晰。主要优势包括:降低代码复杂度、突出核心逻辑、提升可读性和可维护性。实现步骤为:找出所有提前结束的条件,用if-return形式处理,避免多层嵌套。典型应用场景包括参数校验、特殊状态处理等。编写时需注意卫语句应简洁,每个条件后立即返回,不必拘泥于"单一出口"原则。该模式符合主流编码规范,是改善代码结构的有效方法。

qq_59670390的博客 892

浅谈使用卫语句重构方法

卫语句定义: 如果条件语句极其复杂,就应该将条件语句拆解开,然后逐个检查,并在条件为真时立刻从函数中返回,这样的单独检查通常被称之为“卫语句”(Guard Clauses)。 说人话就是:写方法时在合适的时候尽快return,少用else 按卫语句对函数进行重构应遵循: 及时return,if中能return就return。(一旦满足条件return后你根本无需关注后面的代码) 能够return的就尽量少使用else。(用else太多,读者需要维护大量的栈在大脑中) 减少嵌套,一般嵌套超过4层读者就会产生

bigchen 2594

Java卫语句

今天看公司的代码规范文档,看到这么一条规则:       if语句使用“卫语句 ”减少层级嵌套。 一脸的大写的懵逼,“卫语句”是什么东东?赶紧找度妈。 卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句. 简单的例子如下: if(obj != null)

lzy_tinyjoy 4万+

卫语句的基本应用

条件表达式通常有两种表现形式。 第一:所有分支都属于正常行为。 第二:条件表达式提供的答案中只有一种是正常行为(关键代码),其他都是不常见的情况。 这两类条件表达式有不同的用途。如果所有分支都是正常行为,就应该使用形如if…..else…..的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。 Replace Nes...

少年啦飞啦的博客 382
上一篇: iOS FMDB同时修改多个参数的值
下一篇: iOS 判断字符串含有表情
Dancer2015
博客等级 码龄12年 17粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值