全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2019-09-25_「转」别再用Else语句写代码了!

您的位置:首页 >> 新闻 >> 行业资讯

别再用Else语句写代码了! 作者 | Joey Colon 译者 | 核子可乐 编辑 | 陈思 AI 前线导读:if…else 语句是许多程序员在写代码时最常用的方式之一。你甚至可以看到许多程序员的代码中嵌套着无数 else 语句。可这样,真的好吗?这里有一篇关于卫语句的实用介绍。 更多优质内容请关注微信公众号“AI 前线”(ID:ai-front) 在刚开始接触编程时,我多希望能有人在我摸索着开发第一个网站的过程中,给我分享一点中肯的人生经验…… 那会儿我犯下的第一个大错误,就是在编写条件时过度使用 else 关键字。不只是我,后来我发现很多开发者朋友都有这个问题,所以我打算在今天的文章里好好聊聊这件事。 免责声明:本文纯粹是我自己的主观感受。 在某些情况下,我们可能没办法在代码里使用这类方法。有时候,使用 else 关键字确实是最好的解决方案。这些我都承认,本文只是想给大家提供一点关于构建逻辑的新思路。 卫语句 根据维基百科的介绍,卫语句是对完整性前提条件检查。用于避免在执行期间发生错误。 望之不似人言,下面我就用普通话翻译翻译。我们首先得先对前提条件(在代码开头)进行完整性检查,这样才能避免主逻辑流程当中出现错误。 在理想的流程中(当验证正确时),我们希望程序的主逻辑在验证之后才开始运行。 现在让我们假设自己在运营一个网站,其中包含一个高级购买区域,仅限付费客户在每天夜里 12 点之后访问。 ?php if ($user != null) { if (time() = strtotime('12 pm')) { if ($user-hasAccess(UserType.PREMIUM)) { if ($store-hasItemsInStock()) { // the content a premium user user should be able to see when the store is in stock // after 12pm. } else { return 'We are completely sold out.'; } } else { return 'You do not have premium access to our website.'; } } else { return 'This section is not opened before 12PM'; } } else { return 'You are not signed in.'; } 在实际应用中,我们可能会返回某种形式的异常。 虽然这是一种条件流方案,但即使其中只包含少量 else 关键字,我们也很难跟上这样的条件思路。 这还只是条件逻辑的一个简单示例。在实际场景当中,大家肯定遇到过对逻辑极为复杂的类进行导航的状况。在我看来,这样的编码方式缺乏可持续性,我们应该采取更好的办法。 使用卫语句,我们可以遵循以下框架: ?php if (condition1()) { return ...; } if (condition2()) { return ...; } // Input is valid. doSomething(); 利用这套框架,我们可以 重构 以前的代码,具体如下所示: ?php if ($user == null) { return 'You are not signed in.'; } if (time() strtotime('12 pm')) { return 'This section is not opened before 12PM'; } if (!$user-hasAccess(UserType.PREMIUM)) { return 'You do not have premium access to our website'; } if (!$store-hasItemsInStock()) { return 'We are completely sold out.'; } // the content a premium user user should be able to see when the store is in stock // after 12pm. 在卫语句中,我们通常将布尔表达式反转为我们想要 assert 的内容。如果我们希望用户在登录之后才能查看此页面,那么首先就得检查他们是否已经登录。 这种方法实现了相同的精确逻辑流程,但在我看来,这体现出了更为清晰的条件逻辑处理方法。 总 结 在编程时,我们应该始终牢记这样一个问题:“这些代码能够稳定执行至少 6 个月吗?” 就当下来讲,这些代码也许能够很好地解决问题。但是未来呢?在编写代码时不考虑后续需求,显然是种愚蠢的行为。 考虑到这一点,我果断放弃了那些已经修复过无数次的代码,从零开始编写功能。是的,这样才能彻底解决掉技术债务。 适当运用卫语句,大家将能够为自己乃至团队的开发成果奠定坚实的基础,从而在未来需要时随时满足种种新增需求。 原文链接: https://medium.com/better-programming/why-you-need-to-stop-using-else-statements-5b1fd09dea9e 活动推荐 AICon 全球人工智能与机器学习技术大会将于 11 月在北京举行,这里不仅有硅谷、BAT、独角兽们的 AI 技术案例解析,还有颜水成、贾扬清、崔宝秋等大咖现场经验分享。部分议题抢先看: 微软小冰:人格化对话机器人的构建及在语音场景当中的实践 阿里巴巴:智能家装设计中的 3D 算法应用实践 蚂蚁金服:AI 赋能普惠金融的探索与实践 腾讯:腾讯云知识图谱技术与应用实践之路 美团:刻画物理世界的 AI 技术和应用 滴滴:滴滴搜索系统的深度学习演进之路 360:360 金融的 AI 实践之旅 今日荐文点击下方图片即可阅读 中台建设踩坑史,别说这些问题你不会遇到 你也「在看」吗??? 阅读原文

上一篇:2021-04-19_270亿参数!阿里重磅发布PLUG,中文社区最大规模预训练语言模型来了 下一篇:2025-09-30_Anthropic 深夜祭出 Claude Sonnet 4.5,能自主连续工作 30 小时!CEO:它更像你的同事

TAG标签:

16
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价