fihserman123
V2EX  ›  Java

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

  •  
  •   fihserman123 · Feb 3, 2020 · 5951 views
    This topic created in 2467 days ago, the information mentioned may be changed or developed.
    16 replies  •  2020-02-04 14:01:15 +08:00
    ech0x
    ech0x
    Feb 3, 2020 via iPhone
    1
    前排吃瓜。
    micean
    micean
    Feb 3, 2020 via Android
    2
    哪里丑了,总得给个理由吧
    lostberryzz
    lostberryzz
    Feb 3, 2020
    3
    如果说复杂的设计是一种美,那么 Java 的内部类设计岂不是巧夺天工?
    KentY
    KentY
    Feb 3, 2020❤️1
    4
    抛出新看法观点很正常, 起码说几个论据, 和怎么论证的吧?
    Buges
    Buges
    Feb 3, 2020 via Android❤️1
    5
    C++更丑,“兼顾”了易用性,扩展性,性能,和历史遗留问题。简直就是缝合怪。
    zhx1991
    zhx1991
    Feb 3, 2020❤️1
    6
    如果说 java 的设计是一种美, 那么 java 的设计岂不是很美?
    imn1
    imn1
    Feb 3, 2020❤️2
    7
    非白即黑……
    为何中国的教育一直不教逻辑?
    easylee
    easylee
    Feb 3, 2020
    8
    @imn1 #7 暗地里阶级划分、教育问题任重而道远啊。

    另外,看了不少 Java 代码,以及几个大版本的架构设计,我觉得 Java 的设计很强啊,没发现吗?
    easylee
    easylee
    Feb 3, 2020
    9
    @easylee #8 接上:

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

    Java 某种程度上以及某个年代上来说写法简单优雅,可以理解为美吧,但是你又吐槽人家内部丑陋......你去写一个更好的吧。
    wmhx
    wmhx
    Feb 3, 2020
    10
    java 在设计模式和严谨性上说第一, 没意见吧.
    Harry
    Harry
    Feb 3, 2020❤️1
    11
    @fihserman123

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

    Effective Java 是一本非常不错的书,可以读一下。里边有 non static inner class 和 static inner class 的说明和讲解。
    GM
    GM
    Feb 3, 2020
    12
    开局一个论点,网友全靠猜?
    janxin
    janxin
    Feb 4, 2020 via Android
    13
    简单确实美,但不代表复杂一定不美…
    salamanderMH
    salamanderMH
    Feb 4, 2020
    14
    Java 类设计挺好的
    fihserman123
    fihserman123
    OP
    Feb 4, 2020
    15
    @Harry
    内部类有:inner class、nested class、又配合着各种不同的权限修饰( public、protected、default、private ),当然还有匿名内部类、局部内部类。相比较而言,内部接口逻辑就简单很多,必须是 public 且 static 的( nested class 和内部接口逻辑是差不多的)。
    说 Java 设计模式好的,的确,因为这容易让我们看懂代码,知道一个”get+类名"的组合就知道这是一个工厂方法了。可是,这另一方面,代码的堆叠太常见了。
    如果说优美,我自认为内部接口比内部类优美很多。
    fihserman123
    fihserman123
    OP
    Feb 4, 2020
    16
    内部类的存在,我认为在于描述一种类之间的逻辑关系,或者说是具有 throwable 的特性。但是在 heap 中却不分内部类、外部类,本质实现上没有内外区别,Java 想提供一种安全的类间逻辑关系,但是这个逻辑却是显得过于复杂化了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3958 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
    ♥ Do have faith in what you're doing.