首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Effective-Java
只因后端
创建于2023-04-25
订阅专栏
Effective-Java学习
等 4 人订阅
共89篇文章
创建于2023-04-25
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
54. 返回空的数组或集合,不要返回 null
54. 返回空的数组或集合,不要返回 null 像如下的方法并不罕见: 把没有奶酪(Cheese)可买的情况当做一种特例,这是不合常理的。这样需要在客户端中必须有额外的代码来处理 null 的
03. 使用私有构造方法或枚类实现Singleton属性
3. 使用私有构造方法或枚类实现 Singleton 属性 单例是一个仅实例化一次的类[Gamma95]。单例对象通常表示无状态对象,如函数 (条目 24) 或一个本质上唯一的系统组件。让一个类成
34. 使用枚举类型替代整型常量
Java 支持两种引用类型的特殊用途的系列:一种称为枚举类型的类和一种称为注解类型的接口。 本章讨论使用这些类型系列的最佳实践。 34. 使用枚举类型替代整型常量 枚举是其合法值由一组固定的常量组
63. 当心字符串连接引起的性能问题
63. 当心字符串连接引起的性能问题 字符串连接操作符 (+) 是将几个字符串组合成一个字符串的简便方法。对于生成单行输出或构造一个小的、固定大小的对象的字符串表示形式,它是可以的,但是它不能伸缩
71. 避免不必要的使用受检异常
71. 避免不必要的使用受检异常 Java 程序员不喜欢受检异常,但是如果使用得当,它们可以改善 API 和程序。不返回码和未受检异常的是,它们强迫程序员处理异常的条件,大大增强了可靠性。也就是说
04. 使用私有构造方法执行非实例化
4. 使用私有构造器执行非实例化 偶尔你会想写一个只包含静态方法和静态字段的类。 这些类的名声非常不好,因为有些人滥用这些类从而避免以面向对象方式思考从而编写过程化的程序,但是它们确实有着特殊的用
05. 依赖注入优于硬连接资源(hardwiring resources)
05. 依赖注入优于硬连接资源(hardwiring resources) 许多类依赖于一个或多个底层资源。例如,拼写检查器依赖于字典。将此类类实现为静态工具类并不少见 (详见第 4 条):
46. 优先考虑流中无副作用的函数
46. 优先考虑流中无副作用的函数 如果你是一个刚开始使用流的新手,那么很难掌握它们。仅仅将计算表示为流管道是很困难的。当你成功时,你的程序将运行,但对你来说可能没有意识到任何好处。流不仅仅是一个
55. 明智审慎地返回 Optional
55. 明智审慎地返回 Optional 在 Java 8 之前,编写在特定情况下无法返回任何值的方法时,可以采用两种方法。要么抛出异常,要么返回 null(假设返回类型是对象是引用类型)。但这两
48. 谨慎使用流并行
48. 谨慎使用流并行 在主流语言中,Java 一直处于提供简化并发编程任务的工具的最前沿。 当 Java 于 1996 年发布时,它内置了对线程的支持,包括同步和 wait / notify 机
82. 文档应包含线程安全属性
82. 文档应包含线程安全属性 类在其方法并发使用时的行为是其与客户端约定的重要组成部分。如果你没有记录类在这一方面的行为,那么它的用户将被迫做出假设。如果这些假设是错误的,生成的程序可能缺少足够
60. 若需要精确答案就应避免使用 float 和 double 类型
60. 若需要精确答案就应避免使用 float 和 double 类型 float 和 double 类型主要用于科学计算和工程计算。它们执行二进制浮点运算,该算法经过精心设计,能够在很大范围内快
85. 优先选择 Java 序列化的替代方案
85. 优先选择 Java 序列化的替代方案 当序列化在 1997 年添加到 Java 中时,它被认为有一定的风险。这种方法曾在研究语言(Modula-3)中尝试过,但从未在生产语言中使用过。虽然
90. 考虑用序列化代理代替序列化实例
90. 考虑用序列化代理代替序列化实例 正如 85 条和第 86 条提到的,以及本章一直在讨论的,决定实现 Serializable 接口,会增加出错和出现安全问题的可能性,因为它允许利用语言之外
18. 组合优于继承
18. 组合优于继承 继承是实现代码重用的有效方式,但并不总是最好的工具。使用不当,会导致脆弱的软件。 在包中使用继承是安全的,其中子类和父类的实现都在同一个程序员的控制之下。对应专门为了继承而设
15. 使类和成员的可访问性最小化
15. 使类和成员的可访问性最小化 将设计良好的组件与设计不佳的组件区分开来的最重要的因素是,隐藏内部数据和其他实现细节的程度。一个设计良好的组件隐藏了它的所有实现细节,干净地将它的 API 与它
24. 支持使用静态成员类而不是非静态类
24. 支持使用静态成员类而不是非静态类 嵌套类(nested class)是在另一个类中定义的类。 嵌套类应该只存在于其宿主类(enclosing class)中。 如果一个嵌套类在其他一些情况
26. 不要使用原始类型
自 Java 5 以来,泛型已经成为该语言的一部分。 在泛型之前,你必须转换从集合中读取的每个对象。 如果有人不小心插入了错误类型的对象,则在运行时可能会失败。 使用泛型,你告诉编译器在每个集合中允许
79. 避免过度同步
79. 避免过度同步 第 78 条告诫过我们缺少同步的危险性。本条目则关注相反的问题。依据情况的不同,过度同步则可能导致性能降低、死锁,甚至不确定的行为。 为了避免活性失败和安全性失败,在一个
45. 明智审慎地使用Strea
45. 明智审慎地使用 Stream 在 Java 8 中添加了 Stream API,以简化串行或并行执行批量操作的任务。 该 API 提供了两个关键的抽象:流 (Stream),表示有限或无限
下一页