相关读书笔记列表
第38条:遵守普遍接受的命名惯例
java的命名惯例分为两大类:字面的和语法的。
字面命名惯例涉及包、类、接口、方法和域。
包的名字是层次结构的,用句号分隔第一部分。每一部分的长度不要超过8,由小写字母和数字组成(数字少见用),鼓励使用有意义的缩写。除了java和javax外,一般以域名做开头,顺序是顶级域名放在最前面。
类和接口的名字应至少1至多个单词,每个单词的首字母大写(驼峰试),尽量避免缩写。
方法和域的名字与类和接口的名字遵守相同的字面惯例,只是第一个首字母要小写。常量域要全部字母都大写,词之间通过下划线区分。
语法命名惯例比字面惯例更灵活。
- 类通常用一个名词或名词短语,接口或者与类相同,或者以"-able"或"-ible"结尾的形容词。
- 执行某个动作的方法,常用一个动词或动词短语,
-
对于返回boolean类型的方法,名字常以“is"开头后加一个名词或形容词或短语,
-
如果返回的不是boolean,则常用一个名词/短语,或以"get"开头的动词短语。
-
如果一方法所在的类是一个Bean,则强制要求以get开头。
-
如果类包含对属性操作,常用setAttribute或getAttribute格式命名。
转换对象类型的方法,
-
如果返回不同类型的独立的对象,则称为toType
-
如果返回一个视图,则用asType,
-
如果返回与被调用对象同值的原语类型,称为typeValue
-
静态工厂的方法,常用valueOf或getInstance.
NO.39 只针对不正常的条件才使用异常
异常只应该被用于不正常的条件,它们永远不应被用于正常的控制流。
下面是一个用异常作遍历结束条件的滥用异常的例子:
其错有三:
1、创建、抛出和捕获异常的开销是很昂贵的。因为它的初衷是用于不正常的情形,少有jvm会它进行性能优化。
2、把代码放在try-catch中会阻止jvm实现本来可能要执行的某些特定的优化。
3、有些现代的jvm对循环进行优化,不会出现冗余的检查。
完全可以使用标准的实现方式:
这条原则也适用于API设计。一个设计良好的API不应该强迫它的客户为了正常的控制流而使用异常。如果类中有一个”状态相关”的方法,即只有
特定的条件下可被调用的方法,则这个类也应有一个单独的“状态测试”方法,以为调用这个状态相关方法前的检查。如Collection类的next方法和
hasNext方法。
第40条:对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常
java提供了三种可抛出的异常:被检查的异常(checkedException)、运行时异常(run-time Exception)和错误(error)。
如果期望调用者在调用时出现的异常能够恢复,则应该使用被检查的异常,通过抛出一个被检查的异常,强迫调用者在catch中处理该异常,或者将异常传播到外面。
对于一个方法声明要抛出的每一个被检查的异常,它是对API用户的一种潜在指示:与异常相关联的条件是调用这次个方法的一种可能结果。
两种未被检查的可抛出结构:运行时异常和错误,在行为上相同的,它们都不需要、也不应该被捕获的抛出物。你所实现的所有未被检查的抛出结构都应是
RuntimeException的子类。定义一个非Exception、RuntimeException或Error子类的抛出物是可行的,但从行为
意义上它等同于被普通的被检查异常(即Exception子类而非RuntimeException子类).
异常是个完全意义上的对象,在其上可以定义任意的方法。因被检查的异常往往指示了可恢复的条件,所以可通过定义方法,使调用者可获得一些有助于恢复的信息。具体可参见“Java异常的分类”
NO.41 避免不必要地使用被检查的异常
与返回代码不同,被检查的异常强迫程序处理例外的情况,从而大大地提高了程序的可靠性。而过分地使用被检查的异常,则增加了不可忽视的负担。如果正
确地使用API并不能阻止这种异常条件的产生,并且一旦产生了异常,使用API的程序可以采取有用的动作,那么这种负担被认为是正当的。
如果使用API的程序员无法做得比这更好,那么未被检查的异常可能更为合适。在实践中,catch几乎总有断言失败的特征。
“把被检查的异常变成未被检查的异常”的一种技术是,把这个要抛出异常的方法分成两个方法,第一个方法返回一个boolean以指明是否要抛出异常,另一个执行真正的功能,如果条件不满足就抛异常。如下:
转换为:
当然这种转换并不总是合适的,例如一对象将在缺少外部同步的情况下被并发访问,或者可被外界改变状态,那么这种转换将是不合适的。
分享到:
相关推荐
effective java 读书笔记,第二版自己摘要并翻译,以备速查。
Effective Java读书笔记.pdf
effectiveJava的笔记
2021年EFFECTIVEJAVA读书笔记.docx
【Effective Java】阅读笔记markdown 文件
Effective Java读书笔记,记载了大部分我觉的有用的东西,前半部分有代码说明,但后半部分的代码,太过琐碎,就没有整理
Effective-Java读书笔记,别人分享的
基于Effective Java第二版的读书笔记,可以帮助你更好的阅读这边Java圣经,更快的理解其思想
java逻辑思维笔试题Effective Java - 第三版笔记 章节索引 02 - 创建和销毁对象 03 - 所有对象通用的方法 04 - 类和接口 05 - 泛型 06 - 枚举和注释 07 - Lambda 和流 08 - 方法 09 - 通用编程 10 - 例外 11 - 并发 ...
Structure /src/main/java ... ├ effective_java Effective Java 中文第二版 ├ jvm 深入理解Java虚拟机:JVM高级特性与最佳实践 ├ lambda JAVA 8实战 ├ netty Netty权威指南 ├ oop ├ recursion
Java学习笔记 Effective Java Topic2:插件销毁对象 2. 多参数情况 使用重叠构造器; 使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: ...
java软件笔试题 my notebook 我的笔记本,大部分是在大二大三的时候写的笔记,对于已经毕业的来说可能比较基础甚至naive。对面临校招和实习的同学应该会...effective java Android开发艺术探索 Android插件化开发指南
loveincode's notes 学习工作中的一些记录,收藏。 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实现 数据结构 与 排序算法 ...Effective Java , HTTP权威指南 , Java
找了5本学习java的好书和一些例子代码和大家分享,希望能够对您能有所帮助。
高级java笔试题 个人博客 c++ c++primer - c++primer顺序容器与关联容器的一些用法 effective c++ - effective c++笔记归纳 Data Structures and Algorithm Analysis 数据结构与一些算法,来自算法导论,数据结构与...
java8 源码 Spring IoC源码 effectiveJava学习笔记 Java8的实战学习笔记
安卓艺术开发探索读书笔记,EffectiveJava读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看. 更新说明 v2.2.2 1.增加了一些最近在学习比较好的安卓大神的博客. 2.增加了来自GeniusVJR整理的安卓...
《Effective Python》(编写高质量Python代码的59个有效方法) 《流畅的python》 源码学习 学习笔记 Python 自用工具代码库 Scheme 学习笔记 Scheme 学习笔记 《计算机程序的构造和解释》 学习笔记及部分例题答案 ...
作者HotBitmapGG,源码StudyProject,一款 Material Design 风格的 AndroidRank 干货学习客户端,需要...安卓艺术开发探索读书笔记,EffectiveJava 读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看.
java8集合源码有效的 Kotlin - 示例 免责声明:这个存储库包含我在阅读优秀书籍 Effective Kotlin 时收集的个人笔记和示例。 它绝不是本书的摘录或副本。 我鼓励所有 Kotlin 开发人员购买和阅读这本书。 第 1 部分:...