Effective Java~57. 将局部变量的作用域最小化

优先选择 for 循环而不是 while 循环

例如,下面是遍历集合的首选方式

// Preferred idiom for iterating over a collection or array
for (Element e : c) { ... // Do Something with e 
}

如果需要在循环中调用 remove 方法,首选传统的 for 循环代替 for-each循环:

// Idiom for iterating when you need the iterator
for (Iterator<Element> i = c.iterator(); i.hasNext(); ) {Element e = i.next();... // Do something with e and i
}

要了解为什么这些 for 循环优于 while 循环,请考虑以下代码片段,其中包含两个 while 循环和一个 bug:

Iterator<Element> i = c.iterator();
while (i.hasNext()) {doSomething(i.next());
}
...
Iterator<Element> i2 = c2.iterator();
while (i.hasNext()) { // BUG!doSomethingElse(i2.next());
}

for 循环比 while 循环还有一个优点:它更短,增强了可读性

for (int i = 0, n = expensiveComputation(); i < n; i++) {... // Do something with i;
}

        最小化局部变量作用域的最终技术是保持方法小而集中。 如果在同一方法中组合两个行为(activities),则与一个行为相关的局部变量可能会位于执行另一个行为的代码范围内。 为了防止这种情况发生,只需将方法分为两个:每个行为对应一个方法

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

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

相关文章

300+Jquery, CSS, MooTools 和 JS的导航菜单资源

如果你是网站前端开发人员&#xff0c;那么对你来说&#xff0c;也许做一个漂亮导航菜单会很得心应手。本文要为大家总结各种导航菜单的资源&#xff0c;以便让大家的网站前端开发的工作更方便更快速&#xff0c;只要选择现成的例子就可以应用于自己的网站了。本文收集的这些资…

轻量级分布式任务调度平台 XXL-JOB

From&#xff1a;https://www.cnblogs.com/xuxueli/p/5021979.html github 地址 及 中文文档地址&#xff1a;https://github.com/xuxueli/xxl-job 《分布式任务调度平台XXL-JOB》 一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发…

畅玩4c刷android 9.0,华为畅玩4C电信版 CyanogenMod 13.0_Android_6.0.1 【HRT_chiwahfj】

本帖最后由 chiwah渔夫 于 2016-9-9 22:31 编辑【基本信息】ROM名称&#xff1a;华为畅玩4C电信版 CyanogenMod 13.0_Android_6.0.1ROM大小&#xff1a;617M适配版本&#xff1a;CyanogenMod 13.0_android_6.0.1测试机型&#xff1a;华为畅玩4C电信版作者简介&#xff1a;HRT团…

Effective Java~58. for-each 循环优先于传统的for 循环

传统的 for循环来遍历一个集合: // Not the best way to iterate over a collection! for (Iterator<Element> i c.iterator(); i.hasNext(); ) { Element e i.next();... // Do something with e } 迭代数组的传统 for 循环的实例 // Not the best way to iterate …

近期课余目标

http://acm.pku.edu.cn/JudgeOnline/ 按这个顺序做&#xff0c; 这些都是入门的水题 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算…

html语言鼠标悬停特效,CSS3鼠标悬停文字幻影动画特效

这是一款CSS3鼠标悬停文字幻影动画特效。该特效利用before和after伪元素来制作当鼠标悬停在超链接文本上的时候的幻影效果。使用方法在页面中引入bootstrap.css、jquery和photoviewer.js文件。HTML结构在页面中添加一个元素&#xff0c;并设置它的data-hover属性和它的显示文字…

Python 爬虫 实例项目 大全

Github Python 爬虫&#xff1a;https://github.com/search?qpython爬虫 32个Python爬虫项目让你一次吃到撑&#xff1a;https://www.77169.com/html/170460.html 今天为大家整理了32个Python爬虫项目。 整理的原因是&#xff0c;爬虫入门简单快速&#xff0c;也非常适合新入…

Effective Java~23. 类层次优于标签类

标签类&#xff0c;包含一个标签属性&#xff08;tag field&#xff09;&#xff0c;表示实例的风格 // Tagged class - vastly inferior to a class hierarchy! class Figure {enum Shape { RECTANGLE, CIRCLE };// Tag field - the shape of this figurefinal Shape shape;/…

领导之所以是领导

最近系统很不安生&#xff0c;故障频出&#xff0c;12月30日下午15&#xff1a;00系统所有工单都无法在网元开通&#xff0c;用户缴费不能开机&#xff0c;只好手工执行&#xff0c;直到23&#xff1a;30才恢复。1月1日某个业务平台执行工单异常缓慢&#xff0c;导致系统1万多工…

可以叫板Google的一个搜索引擎 —— DuckDuckGo

From&#xff1a;https://blog.csdn.net/inter_peng/article/details/53223455 作为习惯了使用Google进行资料查询的我来说&#xff0c;如果没有Google&#xff0c;真的感觉很难受。纵使找了一些可以翻墙的软件&#xff0c;但无奈还是经常不稳定&#xff0c;总是时断时续的。Bi…

小米鸿蒙1001小米鸿蒙,小米高管早就放下狠话!愿意使用鸿蒙2.0系统:那其他厂商呢?...

【9月14日讯】相信大家都知道&#xff0c;自从华为鸿蒙OS系统2.0版本正式发布以后&#xff0c;由于华为消费者业务CEO余承东正式确认&#xff1a;“华为手机在12月开始适配鸿蒙OS系统&#xff0c;明年所有华为手机全面启用鸿蒙OS系统。” 这也意味着国产智能手机厂商也将彻底的…

Effective Java~26. 不要使用 raw type

在编译完成之后尽快发现错误是值得的&#xff0c;理想情况是在编译时 在泛型被添加到 Java 之前&#xff0c;这是一个典型的集合声明 // Raw collection type - dont do this! // My stamp collection. Contains only Stamp instances. private final Collection stamps ...…

WCF中的管道——管道类型

管道是所有消息进出WCF应用程序的渠道。它的职责是以统一的方式编制和提供消息。管道中定义了传输、协议和消息拦截。管道以层级结构的形式汇总&#xff0c;就创建了一个管道栈。管道栈以分层的方式进行通信并处理消息。例如&#xff0c;一个管道栈可以使用一个TCP协议管道和一…

android德州扑克计算器,学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum...

原标题&#xff1a;学界 | 一台笔记本打败超算&#xff1a;CMU冷扑大师团队提出全新德扑AI Modicum选自arXiv参与&#xff1a;路、晓坤CMU 冷扑大师团队在读博士 Noam Brown、Tuomas Sandholm 教授和研究助理 Brandon Amos 近日提交了一个新研究&#xff1a;德州扑克人工智能 M…

Git教程~忽略特殊文件

# Windows: Thumbs.db ehthumbs.db Desktop.ini# Python: *.py[cod] *.so *.egg *.egg-info dist build# My configurations: db.ini deploy_key_rsa# 排除目录 /target/ /logs/# 排除所有.开头的隐藏文件: .* # 排除所有.class文件: *.class# 不排除.gitignore和App.class: !.…

解决“计划任务不存在的问题”方法

唉&#xff0c;最近弄了一点东西&#xff0c;修改了一下计划任务 结果&#xff0c;在此打开计划任务后看到了这个提示 所选择的任务“{0}”不再存在。若要查看当前任务&#xff0c;请单击“刷新”。 我这个系统是Win2008R2 &#xff0c;因为乱改了Windows自己的任务&#xff0c…

神器 | 百度云资源搜索

From&#xff1a;https://blog.csdn.net/qq_21492635/article/details/81109247 直接上神器 该网页没有做自适应&#xff0c;也没有专门的手机站点&#xff0c;因此建议电脑使用。也可下载桌面客户端&#xff08;仅支持windows&#xff09;&#xff0c;稳定不卡&#xff0c;速度…

html前端如何缓存页面,Nuxt中如何做页面html缓存

Nuxt是一款基于Vue的服务端渲染SSR框架在Nuxt框架的API中&#xff0c;有一个叫 serverMiddleware 的服务端中间件&#xff0c;我们可以利用它在返回首屏html前做一些缓存的处理在这之前我们需要了解一个叫LRU的算法&#xff0c;LRU是一种缓存淘汰算法&#xff0c;用链表存储数据…

Google 和 bing 都无法替代的10大深网搜索引擎

From&#xff1a;https://blog.csdn.net/ejinxian/article/details/74081716 当我们想要搜索某些内容时&#xff0c;我们第一个想到的就是打开Google、百度或必应这类的搜索引擎。但针对有些内容&#xff0c;却是这些常规搜索引擎无法获取到的&#xff0c;那就是隐藏在深网的内…

植树节html5游戏,植树节活动

活动概述活动时间:3月10日至3月13日(以实际版本内活动日期为准)活动介绍:一年一度的植树节活动开始了&#xff0c;小伙伴们拿起小铲子&#xff0c;小水桶&#xff0c;今天勤劳来种树&#xff0c;明天不用吸雾霾&#xff01;快来邀请你的小伙伴一同参与活动吧&#xff0c;开开心…