如果说简单的设计是一种美,那么 Java 的内部类设计岂不是真丑陋?

2020-02-03 20:02:46 +08:00
 fihserman123
4858 次点击
所在节点    Java
16 条回复
ech0x
2020-02-03 20:08:20 +08:00
前排吃瓜。
micean
2020-02-03 20:38:37 +08:00
哪里丑了,总得给个理由吧
lostberryzz
2020-02-03 20:39:19 +08:00
如果说复杂的设计是一种美,那么 Java 的内部类设计岂不是巧夺天工?
KentY
2020-02-03 20:42:17 +08:00
抛出新看法观点很正常, 起码说几个论据, 和怎么论证的吧?
Buges
2020-02-03 20:52:58 +08:00
C++更丑,“兼顾”了易用性,扩展性,性能,和历史遗留问题。简直就是缝合怪。
zhx1991
2020-02-03 21:07:28 +08:00
如果说 java 的设计是一种美, 那么 java 的设计岂不是很美?
imn1
2020-02-03 21:08:27 +08:00
非白即黑……
为何中国的教育一直不教逻辑?
easylee
2020-02-03 21:13:55 +08:00
@imn1 #7 暗地里阶级划分、教育问题任重而道远啊。

另外,看了不少 Java 代码,以及几个大版本的架构设计,我觉得 Java 的设计很强啊,没发现吗?
easylee
2020-02-03 21:17:05 +08:00
@easylee #8 接上:

简单是一种美,对的,但是所谓的简单也是根据内部的高度抽象来的呀。

Java 某种程度上以及某个年代上来说写法简单优雅,可以理解为美吧,但是你又吐槽人家内部丑陋......你去写一个更好的吧。
wmhx
2020-02-03 21:24:03 +08:00
java 在设计模式和严谨性上说第一, 没意见吧.
Harry
2020-02-03 23:21:32 +08:00
@fihserman123

且不说美丑。
Java 的内部类设计有它自己的用处(而且挺好用还挺简洁的)。这个在日常的后端开发中(服务器)不容易看到,如果你接触一些类似 android 的开发,或者看下 android 开源的代码,你就会发现这么大的系统,把所有的类暴露出来是一种迷惑和污染。反而使用内部类,一个可以是逻辑内聚,达到封装的目的,另一个也不会暴露给其他 public interface 导致其他人需要看到这个接口的实现而并不需要用到。

Effective Java 是一本非常不错的书,可以读一下。里边有 non static inner class 和 static inner class 的说明和讲解。
GM
2020-02-03 23:32:27 +08:00
开局一个论点,网友全靠猜?
janxin
2020-02-04 05:43:06 +08:00
简单确实美,但不代表复杂一定不美…
salamanderMH
2020-02-04 09:04:10 +08:00
Java 类设计挺好的
fihserman123
2020-02-04 13:55:18 +08:00
@Harry
内部类有:inner class、nested class、又配合着各种不同的权限修饰( public、protected、default、private ),当然还有匿名内部类、局部内部类。相比较而言,内部接口逻辑就简单很多,必须是 public 且 static 的( nested class 和内部接口逻辑是差不多的)。
说 Java 设计模式好的,的确,因为这容易让我们看懂代码,知道一个”get+类名"的组合就知道这是一个工厂方法了。可是,这另一方面,代码的堆叠太常见了。
如果说优美,我自认为内部接口比内部类优美很多。
fihserman123
2020-02-04 14:01:15 +08:00
内部类的存在,我认为在于描述一种类之间的逻辑关系,或者说是具有 throwable 的特性。但是在 heap 中却不分内部类、外部类,本质实现上没有内外区别,Java 想提供一种安全的类间逻辑关系,但是这个逻辑却是显得过于复杂化了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/641930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX