开发网站如何赚钱html的基本结构

web/2025/9/28 16:32:16/文章来源:
开发网站如何赚钱,html的基本结构,页游平台排行榜,手机网站 怎么开发我曾经听说过#xff0c;过去人们为使方法具有单个出口点而奋斗。 我知道这是一种过时的方法#xff0c;从未认为它特别值得注意。 但是最近#xff0c;我与一些仍坚持该想法的开发人员进行了联系#xff08;最后一次是在这里 #xff09;#xff0c;这让我开始思考。 因… 我曾经听说过过去人们为使方法具有单个出口点而奋斗。 我知道这是一种过时的方法从未认为它特别值得注意。 但是最近我与一些仍坚持该想法的开发人员进行了联系最后一次是在这里 这让我开始思考。 因此我第一次真正坐下来比较了这两种方法。 总览 文章的第一部分将针对多个return语句重复参数。 它还将确定干净代码在评估这些论点中的关键作用。 第二部分将对得益于早日返回的情况进行分类。 为了不总是写“带有多个return语句的方法”我将这种方法称为通过模式构造方法的方法。 尽管这可能有些过头但肯定会更简洁。 讨论 我正在讨论一个方法是否应该始终运行到最后一行从那里返回结果还是可以有多个return语句并“尽早返回”。 这当然不是新的讨论。 参见例如Wikipedia Hacker Chick或StackOverflow 。 结构化程序设计 单个return语句是可取的想法源于1960年代开发的结构化编程范式。 关于子例程它提倡它们具有单个入口和单个出口点。 尽管现代编程语言可以保证前者但出于某些原因后者有些过时了。 单个出口点解决的主要问题是内存或资源泄漏。 当方法内部某处的return语句阻止执行位于其末尾的某些清除代码时就会发生这种情况。 如今其中大部分由语言运行时处理例如垃圾回收并且可以使用try-catch-finally编写显式清除块。 因此现在的讨论主要围绕可读性。 可读性 坚持单个return语句可能导致嵌套增加并需要其他变量例如中断循环。 另一方面使方法从多个点返回可能会导致其控制流程混乱从而使其难以维护。 重要的是要注意这两个方面在代码的整体质量方面有很大的不同。 考虑一种遵循简洁的编码准则的方法它简短且具有明确的名称和意图揭示结构。 通过引入更多的嵌套和更多的变量在可读性方面的相对损失非常明显并且可能使干净的结构混乱。 但是由于该方法的简洁性和形式使其易于理解因此忽略任何返回声明的风险不大。 因此即使存在不止一个控制流程仍然显而易见。 与较长的方法可能是复杂或优化算法的一部分进行对比。 现在情况逆转了。 该方法已经包含许多变量并且可能包含一些嵌套级别。 引入更多内容在可读性方面几乎没有相对成本。 但是忽视多个回报之一从而误解控制流程的风险是非常现实的。 因此问题在于方法是否简短易读。 如果是这样通常使用多个return语句是一种改进。 如果不是则最好使用单个return语句。 其他因素 但是可读性可能不是唯一的因素。 讨论的另一方面可以是日志记录。 如果要记录返回值但不求助于面向方面的编程则必须在方法的出口点手动插入记录语句。 使用多个return语句执行此操作很繁琐而忘记一个则很容易。 同样如果要在从方法返回之前声明结果的某些属性则可能希望使用单个退出点。 多个退货报表的情况 在几种情况下一种方法可以从多个返回语句中获利。 我试图在这里对它们进行分类但没有声称有完整的列表。 如果您遇到另一种重复出现的情况请发表评论我将在此附上。 每种情况都会附带一个代码示例。 请注意缩短了这些内容可以使观点更清楚并且可以通过多种方式进行改进。 由JDHancock在CC-BY 2.0下发布 警卫条款 保护子句位于方法的开头。 他们检查其参数并在某些特殊情况下立即返回结果。 防范条款无效或空集合 private SetT intersection(CollectionT first, CollectionT second) {// intersection with an empty collection is emptyif (isNullOrEmpty(first) || isNullOrEmpty(second))return new HashSet();return first.stream().filter(second::contains).collect(Collectors.toSet()); } 从一开始就排除边缘情况有几个优点 它将特殊情况和常规情况的处理完全分开从而提高了可读性 它提供了用于其他检查的默认位置从而保持了可读性 这使得实施常规案例的错误更少 它可能会提高那些特殊情况下的性能尽管这很少相关 基本上适用于该模式的所有方法都将从其使用中受益。 值得一提的是后卫条款的支持者是马丁·福勒Martin Fowler尽管我会在分支的边缘考虑他的例子 见下文。 分枝 某些方法的职责要求分支到几个通常专用的子例程之一。 通常最好将这些子例程本身实现为方法。 然后原始方法仅负责评估某些条件并调用正确的例程。 委托专门方法 public Offer makeOffer(Customer customer) {boolean isSucker isSucker(customer);boolean canAffordLawSuit customer.canAfford(legalDepartment.estimateLawSuitCost());if (isSucker) {if (canAffordLawSuit)return getBigBucksButStayLegal(customer);elsereturn takeToTheCleaners(customer);} else {if (canAffordLawSuit)return getRid(customer);elsereturn getSomeMoney(customer);} } 我知道我可以省略所有else行。有一天我可能会写一篇帖子解释为什么在这种情况下我不这样做。 与结果变量和单个返回相比使用多个return语句具有多个优点 该方法更清楚地表达了其打算跳转到子例程并仅返回其结果的意图 在任何理智的语言中如果分支未涵盖所有可能性则该方法不会编译在Java中如果未将变量初始化为默认值也可以通过一次返回来实现 结果没有额外的变量几乎可以覆盖整个方法 被调用方法的结果在返回之前是无法操纵的在Java中如果变量是final并且其类是不可变的也可以通过单次返回来实现但是这对于读者而言并不明显 如果将switch语句用于具有穿透性的语言例如Java则立即返回语句可在每种情况下节省一行因为不需要break 这减少了样板并提高了可读性 此模式仅应应用于除分支以外无所作为的方法。 分支机构涵盖所有可能性尤其重要。 这意味着分支语句下没有代码。 如果有的话将需要花费更多的精力来推理通过该方法的所有路径。 如果一种方法满足这些条件那么它将很小且具有凝聚力这很容易理解。 级联检查 有时一种方法的行为主要由多个检查组成其中每个检查的结果可能使进一步检查变得不必要。 在这种情况下最好尽快返回也许在每次检查之后。 寻找锚定父级时进行级联检查 private Element getAnchorAncestor(Node node) {// if there is no node, there can be no anchor,// so return nullif (node null)return null;// only elements can be anchors,// so if the node is no element, recurse to its parentboolean nodeIsNoElement !(node instanceof Element);if (nodeIsNoElement)return getAnchorAncestor(node.getParentNode());// since the node is an element, it might be an anchorElement element (Element) node;boolean isAnchor element.getTagName().equalsIgnoreCase(a);if (isAnchor)return element;// if the element is no anchor, recurse to its parentreturn getAnchorAncestor(element.getParentNode()); } 其他示例是Java中equals或compareTo的常规实现。 它们通常还包含一系列检查其中每个检查都可以确定方法的结果。 如果是则立即返回该值否则该方法将继续进行下一个检查。 与单个return语句相比此模式不需要您跳过箍以防止更深的缩进。 它还使直接添加新的检查和在检查并返回块之前放置注释成为可能。 与分支一样多个return语句应仅应用于短而几乎没有其他作用的方法。 级联检查应该是它们的主要内容或者更好的是它们的唯一内容除了输入验证之外。 如果检查或返回值的计算需要两到三行以上则应将其重构为单独的方法。 正在搜寻 在存在数据结构的地方可以找到具有特殊条件的项目。 搜索它们的方法通常看起来很相似。 如果这种方法遇到了要搜索的项目则通常最容易立即返回它。 立即返回找到的元素 private T T findFirstIncreaseElement(IterableT items, Comparator? super T comparator) {T lastItem null;for (T currentItem : items) {boolean increase increase(lastItem, currentItem, comparator);lastItem currentItem;if (increase) {return currentItem;}}return null; } 与单个return语句相比这使我们免于寻找摆脱循环的方法。 这具有以下优点 没有其他布尔变量可以打破循环 循环没有其他条件它很容易被忽略尤其是在for循环中因此会引发错误 最后两点使循环更容易理解 结果很可能没有其他变量几乎涵盖了整个方法 像大多数使用多个return语句的模式一样这也需要干净的代码。 该方法应该很小除了搜索外别无其他责任。 非平凡的检查和结果计算应具有自己的方法。 反射 我们已经看到了支持和反对多个return语句的参数以及干净代码所起的关键作用。 分类应有助于识别重复出现的情况在这种情况下一种方法将从早期返回中受益。 翻译自: https://www.javacodegeeks.com/2015/01/multiple-return-statements.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名解析网站建设html5网站后台制作

​​题目来源: leetcode题目,网址:110. 平衡二叉树 - 力扣(LeetCode) 解题思路: 获得各位数字后,当较小的两个数字做为十位,较大的两个数字作为个位时所组成的两个两位数之和最小。…

网站流媒体播放如何做数字营销招聘

今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法。我们都知道,图片格式当中有一种叫做svg,这种格式的图片无论我们将它放大多少倍,也不会失真更不会出现边缘模糊的情况。原因也很简…

专业做网站方案ppt昭通高速装配式建筑公司网站

首先要感谢大康老师对我在Linux操作系统上的教导。今天来讲一下用途广泛的Linux的基础入门教程仅仅是做入门使用,如果想更加深入的学习那就需要自己做探索了。本次例子使用的是kali linux(ARM架构)是基于Debian的Linux发行版本,可能会与其他版本操作有所…

网站推广的方法网页设计师需要掌握的领域

驼峰式命名法:当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName&…

网上作业网站怎么做的优秀平面设计网站

背景在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在支付流水号、订单号等,随者业务数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求,此时一个…

个人网站设计分类个人电脑做服务器映射网站

官方文档 nginx documentation 说明 nginx是我们本次教程使用的http服务器。它能承受很高的并发,并且安装简单,占用内存少。 在服务器篇我们提到了nginx的安装,在发布篇我们简述了该怎么放置我们创建的博客html文档。 在本篇&#xff0c…

网站建设方案计划书人员规划软件商店安装免费下载

0x01 产品简介 红帆iOffice.net从最早满足医院行政办公需求(传统OA),到目前融合了卫生主管部门的管理规范和众多行业特色应用,是目前唯一定位于解决医院综合业务管理的软件,是最符合医院行业特点的医院综合业务管理平…

吴江企业网站制作微商城网站建设策划方案

戳蓝字“CSDN云计算”关注我们哦!随着社会的发展,技术的进步,以前的大型机架构由于高成本、难维护等原因渐渐地变得不再主流,替代它的就是当下最火的分布式架构。要说分布式架构有多重要,可以说如果你不了解“分布式”…

宁国新站seo免费手机网站自助建站

无线路由器的品类在不断增加,人们的生活也逐渐无法离开WIFI,各类无线路由器的设置方法大同小异,为了方便不为人知的小白更方便的设置无线路由器,这里详细介绍一下斐讯(phicomm)无线路由器怎么设置。配置前准备:A、请保…

代做外国空间网站搜索引擎排名优化方案

Axious的请求与响应 1.什么是Axious Axious是一个开源的可以用在浏览器和Node.js的异步通信框架,它的主要作用就是实现AJAX异步通信,其功能特点如下: 从浏览器中创建XMLHttpRequests ~从node.js创建Http请求 支持PromiseAPI 拦截请求和…

wnmp搭建后怎么做网站厦门手机网站建设公司

文章目录 1. 介绍2. 使用2-1. 单击双击和长按2-2. 拖动和滑动2-3. 缩放 3. 注意点 1. 介绍 在 flutter 中,GestureDetector 是手势识别的组件,可以识别点击、双击、长按、拖动、缩放等手势事件,并且可以与子组件进行交互,构造函数…

免费的培训网站建设中国建设网官方网站洞庭湖治理

系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于LeetCodeHot100进行的,每个知识点的修正和深入主要参考…

域名暂无法进行网站备案做交易网站什么开发语言

装饰模式使用对象组合的方式动态改变或增加对象行为。 Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式。 使用匿名组合,在装饰器中不必显式定义转调原对象方法。 decorator.go package decoratortype Component interface {Calc() int }type Concre…

一个公司网站备案福田欧辉氢燃料电池客车

前言JSFinder是一款优秀的github开源工具,这款工具功能就是查找隐藏在js文件中的api接口和敏感目录,以及一些子域名。 github链接: Code1https://github.com/Threezh1/JSFinder

电子商务网站建设模板宿迁房产网宿迁市区房屋出售

面试题-TS(一):TypeScript是什么?它与JavaScript有什么区别? TypeScript是一种编程语言,它是JavaScript的超集。它通过添加静态类型、类、接口和模块等功能来扩展JavaScript。 JavaScript是一种广泛应用于Web开发的脚本语言,它的灵活性和…

加拿大网站后缀wordpress从入门

请求上下文和应用上下文详解 一、背景二、什么是上下文2.1、请求上下文2.2、应用上下文2.3、两种上下文的底层逻辑 三、写在最后 一、背景 在如何实现异步发送邮件的时候,遇到过这样一个报错 RuntimeError: Working outside of request context.This typically me…

win7下用iis搭建网站专业网站开发联系方式

外贸行业在Zoho的客户群体中占比较高。因为我们的国际化背景、丰富的产品组合、多语言多币种跨时区、高性价比等特点,成为外贸企业开展业务的选择。在和外贸客户沟通中,发现无论是外贸大拿还是新手小白,大家遇到一个共同的问题——发出去的开…

网站备案 更改ip小程序与手机网站区别

联想ThinkPad笔记本广告向苹果MacBook Air开战 [url]http://www.sina.com.cn[/url] 2008年03月24日 07:21 新浪科技联想ThinkPad X300笔记本广告,暗讽苹果MacBook AirMacbook Air最厚的地方仅有1.94cm,边缘仅0.4cm视频:ThinkPad X300对比Mac…

江西网站搜索引擎优化加速器网页版

气泡堆叠图是堆叠图与气泡图的组合—在堆叠图每根柱子上方添加大小不同的气泡,用于表示另外一个数据变量(如每根柱子各组分的平均值)的大小。 本文利用自己制作的BarBubble工具,进行气泡堆叠图的绘制,先来看一下成品效…

南京建设工程管理局网站公司网站建设模块简介

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供…