Gui*_*ume 20 java inner-classes
在我的一些项目和一些书中据说不使用内部类(匿名或不是静态或不静态) - 除了在某些限制条件下,如EventListener
s或Runnable
s - 是最佳实践.他们甚至在我的第一个行业项目中都是"禁止".
这真的是最佳做法吗?为什么?
(我不得不说我经常使用它们......)
- 编辑---
我无法在所有这些答案中选择正确的答案:大部分都是正确的部分:我仍然会使用内部课程,但我会尽量少用它们!
Uri*_*Uri 27
在我看来,Java代码中90%的内部类是与单个类关联的实体,因此被"推入"作为内部类,或者因为Java不支持Lambdas而存在的匿名内部类.
我个人不喜欢看复杂的内部课程.它们增加了源文件的复杂性,它们使它更大,在调试和分析等方面处理它们很难.我喜欢将我的项目分成许多包,在这种情况下我可以使大多数实体成为顶级类仅限于包装.
这给我留下了必要的内部类 - 例如动作听众,虚假的"功能"编程等等.这些通常是匿名的,虽然我不是粉丝(在许多情况下会更喜欢Lambda),但我和他们住在一起但是不要不喜欢他们.
多年来我没有做过任何C#,但我想知道在引入Lambdas时内部类的流行程度或C#等价物的流行是否会被删除.
Mic*_*ers 17
清洁度.如果代码被分解为逻辑部分,而不是所有代码都存储在同一个文件中,则更容易理解代码.
也就是说,我不认为明智地使用内部类是不合适的.有时这些内部类只存在于一个目的,因此我可以将它们存在于使用它们的唯一文件中.但是,根据我的经验,这并没有发生太多.
是的,禁止内部阶级是一种有用的做法,因为找到一个禁止他们进入的地方是警告我不要在这里工作的好方法,因此可以保持我将来的理智。:)
正如gicappa所指出的那样,匿名内部类是Java最接近闭包的类,并且非常适合在将行为传递给方法的情况下使用(如果没有其他情况)。
归档时间: |
|
查看次数: |
16942 次 |
最近记录: |