`
sam406
  • 浏览: 59468 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

effective java 之通用程序设计

    博客分类:
  • java
 
阅读更多
第一条  将局部变量的作用域最小化
  将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性。
  要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。几乎每个局部变量的声明应该包含一个初始化表达式。如果你没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止,这个条规则有个例外的情况是try-catch语句。如果一个变量被一个方法初始化,而这个方法可能会抛出一个受检的异常(checked exception),该变量就必须在try块的内部被初始化。如果变量的值必须在try块外的被使用到,它就必须在try块的外部声明, 循环中提供了特殊的机会来将变量的作用域最小化,如果在循环终止之后不再需要循环变量的内容,for 循环优于whlile
  实例1
 for(Element e:c){
  doSomething(e); 
}

实例2
   for(Iterator i=c.iterator();i.hasNext){
  doSomething(i.next());
   }


为了弄清楚为什么这个for循环优于while。下列有两代码片段

  Iterator<Element>  i=c.iterator();
while(i.hasNext()){
  doSomething(i.next());
}
....

Iterator<Element>  i2=c2.iterator();
   
   while(i.hasNext()){
  doSomething(i2.next());
}


   第二个循环中包含一个“copy--past”错误,它本来要初始化一个循环变量c2.却使用了旧的循环变量i,遗憾的是。这个i仍然在有效的范围内。结果代码可以通过编译,运行的时候也不会抛出异常,但是它所做的却是错误的,第二个循环却没有在c2上迭代,而是立即终止,因为这个程序是悄然发生的,所以很长一段时间是不会发现的, 如果类似“copy-past”错误发生在前面任何for循环中,结果代码就根本不能通过编译,在第二个循环开始之前,第一个循环元素的变量已经不在它的作用域范围之内了:

 
for(Iterator<Element> i=c.iterator();i.hasNext()){
   doSomething(i.next());
  }
....

  //编译错误
for(Iterator<Element> i2=c2.iterator();i.hasNext()){
 doSomething(i2.next());
}

......

    使用for循环与使用while还有一个优势:更简短,从而增强了可读性。
 for(int i=0;n=expensvie();i<n;i++){
      doSomething(i);
  }

   最后一种“将局部比那里的作用域最小化”的方法是使方法小而集中。


第二条 for-each 循环优于for循环

    三种情况不易使用for-each循环
   1 过滤----如果需要遍历集合,并删除选定的元素,就需要使用显示的迭代器,以便可以调用它的
remove方法
   2  转换---如果需要遍历列表或数组并取代她部分或全部元素值,就需要列表迭代器或者数组索引
,以便设定元素的值
    3 平行迭代----如果要并行的遍历多个集合,就需要显示地控制迭代器或者索引变量,
分享到:
评论

相关推荐

    Effective.Java_Java8_并发_java_effectivejava_

    目录:一、创建和销毁对象 (1 ~ 7)二、对于所有对象都通用的方法 (8 ~ 12)三、类和接口 (13 ~ 22)四、泛型 (23 ~ 29)五、枚举和注解 (30 ~ 37)六、方法 (38 ~ 44)七、通用程序设计 (45 ~ 56)八、异常 ...

    Java并发程序设计教程

    ### Java并发程序设计教程知识点概览 #### 一、使用线程的经验:设置名称、响应中断、使用ThreadLocal 在Java并发编程中,正确管理线程对于构建稳定、高效的多线程应用程序至关重要。命名线程是一项基本但重要的...

    java优秀源码-Effective-Java-Concepts:Java源代码可以强化概念,我正在从JoshuaBloch的出色著作“Eff

    《Effective Java》是Java开发领域的一本经典著作,由知名程序员Joshua Bloch撰写。这本书深入探讨了如何编写高效、可维护的Java代码,并提出了许多实用的编程实践和设计原则。通过对书中源代码的分析,我们可以更...

    程序设计经典书目推荐

    ### 程序设计经典书目推荐 #### 一、编程语言 对于游戏开发者来说,掌握一门或多门编程语言是至关重要的。当前游戏行业的主流编程语言主要包括 C/C++,此外,针对移动平台(如智能手机)的游戏开发则常用 J2ME...

    effecive java 中文版 第二版

    根据提供的信息,“Effective Java 中文版 第二版”这本书主要关注的是Java编程语言的最佳实践、设计模式以及如何编写高效、可维护的Java代码。虽然给定的部分内容并未提供实际的文字内容,但从标题和描述来看,我们...

    C++程序设计习题与解答

    ### C++程序设计基础 #### 1. C++语言概述 - **定义与历史**:C++是一种通用的、面向对象的编程语言,由Bjarne Stroustrup在1979年开始设计并实现。它是在C语言的基础上发展起来的,并添加了类、模板等特性。 - **...

    Java开发注意事项

    最后,遵循Java社区认可的最佳实践,如Google Java Style Guide、Effective Java等书籍提供的指导原则,可以帮助开发者写出高质量、高效率的代码。 总之,Java开发不仅仅是掌握语言本身,更是理解其背后的生态系统...

    项目教学法在Java教学中的应用.pdf

    Java是一种跨平台应用软件的面向对象的可编程语言,是由Sun Microsystems公司于1995年推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术广泛应用于个人电脑、互联网、数据中心、移动...

    effective go(英文版)

    8. 并发编程:Go语言从设计之初就内置了强大的并发支持。Goroutine是一种轻量级的线程,可以在单一系统上高效运行成千上万个并发任务。channels则提供了一种安全的、同步的、基于消息的数据流控制机制。 9. 错误...

    Java绘图板源代码

    - Java编程书籍: 如《Thinking in Java》、《Effective Java》等。 - 在线教程和博客: 许多开发者分享的实践经验和技术文章。 综上所述,Java绘图板项目的开发不仅是一项实际的编程任务,更是深入学习Java语言...

    effective c++中文版 第三版

    异常安全是C++异常处理的一个重要方面,它要求程序在发生异常时,资源得到正确释放,对象处于合理状态。书中讨论了如何编写异常安全代码,包括基本保证、强保证和不抛出异常的承诺。 在设计模式方面,书中通过C++的...

    Java核心技术(1).pdf

    综上所述,《Java核心技术》、《Effective Java》、《Java并发编程实战》以及《深入理解Java虚拟机》四本书分别从不同的角度全面覆盖了Java开发中的关键技术点。无论是初学者还是有一定经验的开发者都能从中获得宝贵...

    java面试题(整理)

    - 《Effective Java》 - 《Thinking in Java》 - 《Java编程思想》 - 《Java并发编程实战》 2. **解析XML的主要方法有哪些?各有什么区别?** XML解析主要有以下几种方法: - **DOM (Document Object Model)...

    Effictive Java

    ### 《Effective Java》知识点概览 ...该书深入浅出地介绍了Java编程语言的各个方面,对于Java开发者来说是一部不可或缺的经典之作。通过学习和应用书中的建议,开发者可以编写出更加高效、健壮且易于维护的代码。

    程序员必读 编程规范(包括Java编程规范、C++编程规范、高质量C++,C编程指南、微软C编程精粹、华为 程序规范教材The Prictice of Programming等)

    本资源集合包含了多种编程语言的规范指南,包括Java、C++、C以及针对特定场景的编程实践,如微软C编程精粹和华为程序规范教材。以下是对这些编程规范的详细解读: 1. **Java编程规范**: Java编程规范由Sun ...

    计算机经典书籍介绍.pdf

    - **C# 程序设计**:Charles Petzold 著,被誉为 Windows 编程领域的经典之作,也是学习 C# 语言的重要参考书目之一。 以上书籍都是各自领域的经典之作,对于初学者和有一定经验的开发者来说都非常有价值。通过...

    java面试总结

    - **《Effective Java》**: 关于Java编程的最佳实践。 - **《Clean Code》**: 关于编写清晰简洁代码的原则和技术。 - **《Design Patterns: Elements of Reusable Object-Oriented Software》**: 介绍设计模式的经典...

Global site tag (gtag.js) - Google Analytics