`
zhang_xzhi_xjtu
  • 浏览: 536627 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

实践中的重构22_不要垃圾

阅读更多
Java引入了GC当然很好,减轻了程序员手工管理内存的负担,但是也不能因为有了GC就毫无顾虑的搞出很多垃圾来。
		A a = new A();
		if (condition) {
			a = getAFromSomePlace();
		} else {
			a = getAFromOtherPlace();
		}

上面的代码片段中,第一行new出来的东西只能是垃圾了。
为什么程序会这么写呢?
1 程序员对java不熟悉,以为局部变量必须声明和初始化同时进行。
2 不明确的代码规范规定必须进行局部变量初始化,于是悲剧产生了。实际上,局部变量如果有分支没有进行初始化,后面的程序中如果使用该局部变量,编译器会报错。
家里不需要这么多垃圾的,清理它吧。
		A a = null;
		if (condition) {
			a = getAFromSomePlace();
		} else {
			a = getAFromOtherPlace();
		}

分享到:
评论
2 楼 fudongp 2011-03-23  
新手———— 紧记了
1 楼 liuyuru 2011-03-22  

       在创建对象时应注意几个关键应用规则:
     
       <1> 避免在循环体中创建对象,即使该对象占用内存空间不大。
       <2> 尽量及时使对象符合垃圾回收标准。比如 myObject = null。
       <3> 不要采用过深的继承层次。
       <4> 访问本地变量优于访问类中的变量。

相关推荐

    重构-改善既有代码的设计 中文版 非影印版

    书中还包含了一系列实用的重构模式,旨在帮助读者理解和应用重构技巧,从而提升代码质量。 #### 重构技术和方法 ##### AddParameter(添加参数) - **定义**:为现有的函数或方法增加新的参数,以提高其灵活性或...

    重构-改善既有代码的设计

    《重构-改善既有代码的设计》一书,由马丁·福勒撰写,是软件工程领域的一部经典之作...马丁·福勒在书中不仅提供了详细的重构步骤和示例,还深入探讨了重构背后的设计理念和最佳实践,为读者提供了宝贵的指导和启发。

    休整垃圾代码的成果

    标题中的“休整垃圾代码的成果”意味着这个压缩包包含了对一些质量较低或不规范的代码进行优化后的结果。这通常涉及到代码重构、错误修复、性能提升和代码风格改进等步骤。描述中提到的链接...

    垃圾分类从我做起作文600字_1完美版.pdf

    【部分内容】首先讲述了垃圾分类的重要性,通过一个小故事展示了垃圾分类在日常生活中的实际应用。随着社会进步,尽管科技发展迅速,但人们对于垃圾分类的认识仍然不足。文章以作者在公园遇到的不同垃圾分类场景为例...

    垃圾中转站的清洁.pdf

    在IT行业中,尽管"垃圾中转站的清洁"这一主题看似与之不直接相关,但其实我们可以从中引申出一些重要的管理和系统维护概念,这些概念同样适用于数据管理、软件工程和系统优化等领域。 首先,垃圾中转站的清洁管理...

    example_bins:重构的第一个示例代码

    【标题】"example_bins:重构的第一个示例代码"是一个关于软件开发中的重构实践的项目,主要涉及的是Java编程语言。重构是一种改善代码结构而不改变其外在行为的技术,旨在提高代码的可读性、可维护性和整体质量。在...

    pyai demo 垃圾代码

    【标题】"PyAI Demo 垃圾代码" 暗示了这是一个关于Python人工智能(PyAI)领域的示例代码库,可能包含了错误或者效率低下的编程实践。在这个场景下,“垃圾代码”并不是指真正的垃圾数据,而是指编程时可能存在的...

    rf:Go的重构工具

    在编程领域,重构是优化代码结构、提高可读性和维护性的关键实践。针对Go语言,"rf: Go的重构工具" 提供了一种实验性的解决方案,旨在帮助开发者更有效地进行代码改造。射频(RF)工具是专为Go语言设计的,尽管它...

    jdk_1.8.0_172.zip

    《深入理解Java开发工具...对于开发者来说,熟练掌握这些新特性并将其应用于实践中,可以显著提高开发效率和代码质量。通过下载和使用这个压缩包,开发者可以立即开始Java 8的探索之旅,无需花费长时间等待官方下载。

    续:ExtJS Chart 扩展(重构了下,并写了个新的示例--内存监控)

    【标题】"续:ExtJS Chart 扩展(重构了下,并写了个新的示例--内存监控)"指的是一个关于ExtJS图表扩展的更新版本,其中作者进行了重构,并且添加了一个全新的示例,用于实现内存监控功能。这个主题涵盖了两个主要的...

    jdk1.8.0_181.zip

    《深入解析JDK1.8.0_181在64位Windows操作系统中的应用》 JDK(Java Development Kit)是Java编程语言的核心组件,它包含Java运行环境(JRE)、开发工具集以及Java标准库。JDK1.8.0_181是Oracle公司发布的一个重要...

    Java极限编程_src源码源码整理

    通过研究这个源码整理,开发者不仅可以深入了解极限编程在Java项目中的实施,还能提升自己的编程技能,学习如何在实践中遵循敏捷原则,提高软件开发效率和质量。对于想要深入理解极限编程理念和实践的Java开发者来说...

    todo_golangTODOlist_Go_

    标题中的"todo_golangTODOlist_Go_"表明这是一个使用Go语言开发的待办事项(Todo List)应用。这个应用的核心是实现一个简单的任务管理功能,它利用了SQLite3数据库来存储和检索用户创建的任务。 Go语言,也被称为...

    java_celluar.zip_golang_golang 界面_java_celluar

    标题中的“java_celluar.zip_golang_golang 界面_java_celluar”暗示了这是一个与Java和Golang相关的...对于有一定经验的开发者,这个项目提供了实践和改进的机会,比如增强功能、优化性能或者重构代码以提高可读性。

    CPlus_to_Java_Converter;C++转java工具

    《C++到Java转换器:理解跨语言编程的挑战与实践》 在计算机科学领域,跨语言编程是一项关键技能,特别是在需要利用不同编程语言的优势时。C++和Java是两种广泛应用且具有各自特点的编程语言。C++以其高效、灵活和...

    Dissecting_A_CSharp_Application_EN.7z

    未发布的第18章节可能涉及一些尖端话题,如C#的最新版本特性,如模式匹配、可空引用类型、异步流或记录类型,或者是关于特定开发实践的深入讨论,如持续集成、代码重构或者性能调优。 总之,《Dissecting A CSharp ...

    这是蓝海卓越宽带计费系统的WEB界面,基于PHP语言开发,功能极其强大,同时也极其垃圾,更多BUG等待您的发觉^_^.zip

    然而,从标题中可以看出,这个系统可能存在一些问题,被形容为“极其垃圾”,暗示可能存在着大量的BUG或者性能不佳,这为用户在实际使用中提供了改进和优化的空间。 PHP是一种广泛使用的开放源代码脚本语言,尤其...

    cpp_48抄的

    在编程实践中,有时需要将一种语言的代码逻辑迁移到另一种语言中,以便在不同的开发环境中使用。在这个过程中,开发者需要理解原代码的功能,然后利用目标语言的特性来实现相同的功能。Python因其简洁明了的语法和...

    Agile_Java_Crafting_Code_with_Test-Driven_Development.rar

    《敏捷Java:以测试驱动开发打造代码》是一...通过《敏捷Java:以测试驱动开发打造代码》这本书,读者不仅可以深入理解TDD的原理和实践,还能掌握如何在Java环境中有效地应用这些理念,从而提升个人和团队的开发能力。

Global site tag (gtag.js) - Google Analytics