`
逆天子军少
  • 浏览: 78773 次
  • 性别: Icon_minigender_1
  • 来自: 安庆
社区版块
存档分类
最新评论

通用程序设计

阅读更多
本章主要讨论java语言的具体细节,包括局部变量的处理,控制结构,类库和各种数据类型等。

第四十五条:将局部变量的作用域最小化
这和使类和成员的可访问性最小化本质差不多,必要性不用多说。要使局部变量作用域最小化,最有力的方法就是在第一次使用它的时候声明。几乎每个局部变量的声明都应该包含一个初始化表达式。如果你还没有足够的信息对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化。另外,可以通过使方法小而集中做到最小化作用域。

第四十六条:for-each循环优先于传统的for循环
for-each循环通过完全隐藏迭代器或者索引变量,避免了混乱和出错的可能,适用于集合和数组。除此之外,还让你遍历任何实现Iterable接口的对象。
总之,for-each循环在简洁性和预防Bug方面有着传统的for循环无法比拟的优势,并有没有性能损失。

第四十七条:了解和使用类库

第四十八条:如果需要精确的答案,请避免使用float和double
对于任何需要精确答案的计算任务,请不要使用float或者double。如果你想让系统来记录十进制小数点,并且不介意因为不使用基本类型而带来的不便,就请使用BigDecimal。使用BigDecimal还有一些额外的好处,它允许你完全控制舍入,每当一个操作涉及舍入的时候,它允许你从8种舍入模式中选择其一。如果性能非常关键,并且你又不介意自己记录十进制小数点,而且所涉及的数值又不太大,就可以使用int或者long。如果数值范围没有超过9位十进制数字,就可以使用int;如果不超过18位数字,就可以使用long。如果数值可能超过18位,就必须使用BigDecimal。

第四十九条:基本类型优先于装箱基本类型
Java类型系统由两部分组成,包括基本类型(如int,double)和引用类型(如String,List)。每个基本类型都有一个对应的引用类型,称作装箱基本类型。
基本类型和装箱基本类型有三个区别。第一,基本类型只有值,而装箱基本类型则具有和它们的值不同的同一性。第二,基本类型只有功能完备的值,而每个装箱基本类型除了它对应基本类型的所有功能值之外,还有个非功能值:null。最后,基本类型通常更节省时间和空间。
装箱基本类型有几个合理的用处。第一个是作为集合中的元素,键和值。不能将基本类型放在集合中,因此必须使用装箱基本类型。另外,在参数化类型中,必须使用装箱基本类型。最后,在进行反射的方法调用时,必须使用装箱基本类型。
总之,基本类型优先于装箱基本类型。如果必须使用装箱基本类型,要注意!自动装箱减少了繁琐性,但并没有减少它的风险。

第五十条:如果其他类型更适合,则尽量避免使用字符串
如果可以使用更加合适的数据类型,或者编写更加适当的数据类型,就应该避免用字符串表示对象。若使用不当,字符串会比使用其他类型笨拙,更容易出错。经常被错误地用字符串来替代的类型包括基本类型,枚举类型和聚集类型。

第五十一条:当心字符串连接的性能
不要使用字符串连接操作符来合并多个字符串,除非性能无关紧要。相反,应该使用欧冠StringBuilder的append方法。另一种方法是,使用字符串数组,或者每次只处理一个字符串而不是将他们组合起来。

第五十二条:通过接口引用对象
用接口作为类型,将使程序更加灵活。当我们决定更换实现时,只需要改变构造器中类的名称或者使用一个不同的静态工厂。

第五十三条:接口优先于反射机制
通过反射技术,给定一个Class实例,你可以获得Constructor,method和Field实例。并且,允许一个类使用另一个类,即使当前者被编译的时候后者还不存在。然而,这种能力也要付出代价:
1.丧失了编译时类型检查的好处。
2.执行反射访问所需要的代码非常笨拙和冗长。
3.性能损失。
反射功能只是在设计时被用到。通常,普通应用程序在运行时不应该以反射方式访问对象。

第五十四条:谨慎使用本地方法
JNI允许java应用程序调用本地方法,所谓本地方法是指用本地程序设计语言(比如C或者C++)来编写的特殊方法。通常本地方法有三种用途,他们提供了“访问特定于平台的机制”的能力,比如访问注册表和文件锁。他们还提供了访问遗留代码库的能力,从而可以访问遗留数据。最后,本地方法可以通过本地语言,编写应用程序中注重性能的部分,以提高系统性能。

第五十五条:谨慎地进行优化
不要费力去编写快速的程序,应该编写好的程序。在设计系统特别是API和永久数据格式的时候,一定要考虑性能的因素。系统构建完成后,通过性能剖析器,不断优化问题的根源。第一个步骤是检查算法,再多的底层优化也无法弥补算法的选择不当。

第五十六条:遵守普遍接受的命名惯例


分享到:
评论

相关推荐

    Ada 通用程序设计语言

    Ada是一种表现能力很强的通用程序设计语言,它是美国国防部为克服软件开发危机,耗费巨资,历时近20年研制成功的。它被誉为第四代计算机语言的成功代表。 Ada语言的使用可大大改善软件系统的清晰性、可靠性、有效性...

    服务端通用程序设计

    服务端通用程序设计 服务端通用程序设计 服务端通用程序设计

    C 语言 API文档 C语言是一门面向过程的、抽象化的通用程序设计语言

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管...

    基于matlab的空间三维桁架结构受力分析通用程序设计.pdf

    本文档《基于matlab的空间三维桁架结构受力分析通用程序设计.pdf》详细介绍了如何利用MATLAB软件结合有限元方法来设计一个空间三维桁架结构受力分析的通用程序。 首先,文档指出了空间三维桁架结构的重要性,并强调...

    论文研究-县级人口系统规划研究通用程序设计.pdf

    论文研究-县级人口系统规划研究通用程序设计.pdf, 本文采用人口系统研究方法, 以TURBOBASIC开发了一个县级人口系统规划研究通用的软件。该软件包括人口的复杂预测和人口...

    网络协议芯片W5300通用程序

    通过深入理解W5300的内部结构和通用程序设计,开发者不仅可以快速地将网络功能集成到自己的产品中,还能优化系统性能,降低功耗,提高整体系统的可靠性。同时,这种高度集成的网络协议芯片也简化了嵌入式系统的网络...

    刘艺新书 Delphi程序设计大学教程

    本书同时详细分析Delphi作为通用程序设计语言的本质特征和语法规则,并以大量Delphi程序实例演示应用程序的设计过程,介绍主流的思想方法,培养读者的代码编写能力。  本书内容深入浅出,覆盖面广,图文并茂,独...

    C语言程序设计(chinapub)

    china-pub产品,高清,C语言是目前流行的通用程序设计语言,是许多计算机专业人员和计算机的爱好者学习程序设计语言的首选。 本书共10章,分别介绍了C语言的算法基础、基本概念和如何利用C语言进行程序设计。通过...

    椭圆型腔数控铣削通用宏程序的设计

    介绍了椭圆曲线加工原理,设计了...实践表明,该通用宏程序有效克服了自动编程程序冗长、精度不易控制、可读性、可重用性及灵活性差的缺点,对机械加工中曲线轮廓、相似零件分组和曲面零件的通用宏程序设计具有借鉴意义。

    单片机与DSP中的软键盘产品界面显示的通用程序设计

    摘要:介绍如何利用状态图的分析结果把握待开发系统的软界面结构,完成软键盘控制类产品界面显示的通用程序设计。 关键词:状态图 控制类产品 界面 数据结构可视频程序的一个重要特点是:有大量的窗口、对话框等界面...

    Java程序设计大学教程试读+课件(PDF)

    以Java语言为载体,通过讨论Java程序...本书同时详细分析了Java作为通用程序设计语言的本质特点和语法规划,并以大量Java程序实例演示说明有关应用程序的设计过程,介绍主流的程序设计思想方法,培养读者的代码编写.

    Java程序设计大学教程试读+课件

    本书同时详细分析了Java作为通用程序设计语言的本质特点和语法规划,并以大量Java程序实例演示说明有关应用程序的设计过程,介绍主流的程序设计思想方法,培养读者的代码编写能力。本书内容深入浅出,覆盖面广,...

    农民讲习所农民讲习所建立通用程序.rar

    农民讲习所建立通用程序 包括代码 和 清晰的pdf文档 建立一个电子钟

    非常完整全面的教程-C语言程序设计-孤灯浪子分享版

    C语言是目前流行的通用程序设计语言,是许多计算机专业人员和计算机的爱好者学习程序设计语言的首选。 本书共10章,分别介绍了C语言的算法基础、基本概念和如何利用C语言进行程序设计。通过大量的实例介绍了C语言...

    通用机器人程序设计通用机器人程序设计.doc

    通用机器人程序设计通用机器人程序设计

    C语言程序设计完美教程

    C语言是目前流行的通用程序设计语言,是许多计算机专业人员和计算机的爱好者学习程序设计语言的首选。 本书共10章,分别介绍了C语言的算法基础、基本概念和如何利用C语言进行程序设计。通过大量的实例介绍了C语言...

    c++语言程序设计郑莉第四版 源代码 完整

    C++是一种静态类型、编译式的通用程序设计语言,它支持过程化编程、面向对象编程以及泛型编程等多种编程范式。源代码中可能会包含对变量声明、数据类型、运算符、流程控制(如if语句、switch语句、for循环、while...

    MFC程序设计详细实例 第07章 通用控件

    MFC程序设计详细实例 第07章 通用控件MFC程序设计详细实例 第07章 通用控件MFC程序设计详细实例 第07章 通用控件MFC程序设计详细实例 第07章 通用控件MFC程序设计详细实例 第07章 通用控件MFC程序设计详细实例 第07...

Global site tag (gtag.js) - Google Analytics