Java有哪些不好的设计?
Java的出发点是提供一个比C/C++“安全”得多的编程环境。虽然GC和数组越界检查起到了很大的作用,但是Java又在以下3点偏离了安全初衷,使得程序员仍然需要时时刻刻提醒自己才不会犯错
整数计算会无声overflow/underflow。这就是说你不能用c = (a + b) / 2来计算两个整数的平均值。由于这个非常反直觉,而且一旦溢出程序员也得不到提示,因此历史上造成了JRE的标准库里潜伏很多很多年的bug多线程情况下的Memory Model。由于向性能妥协,这个机制偏复杂,在没有深入研究的情况下大多数程序员都会犯错。更糟的是很多Java程序员甚至不知道这个概念(也许连volatile这个关键字都没用过)Exception。理论上Unchecked Exception几乎可以从任何一行调用中冒出来,因此分析代码的时候程序员不仅要理解正常情况下的程序流程,还要兼顾任何一行冒出异常的情况。这是非常大的思想负担(C程序员就不要担心这个)。如果处理不好,异常会破坏程序核心对象图的完整性,导致任意后果的程序bugCopyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有