Java(匿名与否)内部类:使用它们好吗?

2022-09-01 19:41:19

在我的一些项目和一些书中,据说不使用内部类(匿名与否,静态与否)——除非在一些受限条件下,如s或s——是一种最佳实践。他们甚至在我的第一个行业项目中被“禁止”。EventListenerRunnable

这真的是最佳实践吗?为什么?

(我不得不说我经常使用它们...)

- 编辑---
我无法在所有这些响应中选择正确的答案:几乎所有它们都有一部分正确性:我仍然会使用内部类,但我会尝试不那么频繁地使用它们!


答案 1

在我看来,Java代码中90%的内部类要么是与单个类关联的实体,因此被“塞进”作为内部类,要么是由于Java不支持Lambdas而存在的匿名内部类。

我个人不喜欢看到复杂的内部类。它们增加了源文件的复杂性,使它们变得更大,在调试和分析等方面处理起来很丑陋。我喜欢将我的项目分成许多包,在这种情况下,我可以使大多数实体成为仅限于包的顶级类。

这给我留下了必要的内部类 - 例如动作侦听器,假的“函数式”编程等。这些通常是匿名的,虽然我不是粉丝(在许多情况下更喜欢Lambda),但我和他们住在一起,但不喜欢他们。

我已经很多年没有做过任何C#了,但是我想知道当他们引入Lambdas时,内部类或任何C#等效物的流行率是否会下降。


答案 2

清洁。如果代码被分解成逻辑部分,而不是全部混杂到同一个文件中,则更容易理解代码。

也就是说,我不认为明智地使用内部类是不合适的。有时这些内部类只出于一个目的而存在,所以我对它们在使用它们的唯一文件中没有问题。但是,根据我的经验,这种情况并没有发生太多。


推荐