【问题标题】:Maximum lines of code permitted in a Java class?Java 类中允许的最大代码行数?
【发布时间】:2008-09-20 10:39:33
【问题描述】:

.java 文件可以包含多少行代码?是否取决于所使用的 JVM?

【问题讨论】:

    标签: java


    【解决方案1】:

    “代码行数”没有限制,但总大小有限制。每种方法都有 64kb 的限制。

    我只在使用代码生成工具时遇到过这种情况。

    如果您接近极限,请小心。许多分析和监控工具都使用字节码插入。如果您离得太近,他们可能会将您推到顶峰。更糟糕的是,他们经常在编译后更改您的类文件。一切都在您的开发环境中编译和运行,但是当您在测试或 QA 中打开监控工具时,它会崩溃。

    【讨论】:

      【解决方案2】:

      如上所述,java中每个类的“代码行数”没有限制,我们大概可以使用200行作为一个很好的指导方针,每个类不超过500行。

      【讨论】:

      • 我可以知道如何在 android 中处理它,因为像 UIview 投射和 JSON Parsing 这样的基本级别就超过了 500 行。您有任何提示和技巧请分享。提前致谢。
      • 如果我们在一个业务级类中有 20 个方法,每个方法包含 30 行呢?
      • @MohanRajS JSON 解析应该转到单独的类,活动应该只包含直接链接到 UI 的基本方法和变量。更多详情请参考 M-V-V-M 架构developer.android.com/topic/libraries/architecture/viewmodel
      【解决方案3】:

      为了扩展 Java 虚拟机规范 Jonas's responseSection 4.8 Constraints on Java Virtual Machine Code 表示:

      Java 虚拟机代码 方法,实例初始化方法 (§3.9),或类或接口 初始化方法(§3.9)被存储 在代码的代码数组中 method_info 结构的属性 一个类文件。本节 描述了相关的约束 与内容 code_attribute 结构。

      继续第 4.8.1 节,静态约束

      类文件的静态约束 是那些定义良构的 的文件。除了 Java virtual 上的静态约束 类文件的机器码,这些 中已经给出了约束 上一节。静态的 对 Java 虚拟的约束 类文件中的机器码指定 Java虚拟机如何指令 必须在代码数组中布局,并且 个体的操作数是什么 必须有说明。

      静态约束 代码数组中的指令如下 如下:

      ...

      • code_length 项的值必须小于 65536。

      ...

      所以一个方法确实有每个方法的字节码限制为 65535 字节。 (见下文注释)

      有关 JVM 的更多限制,请参阅Section 4.10 Limitations of the Java Virtual Machine

      注意:尽管 JVM 的设计显然存在问题,如果字节 65535 处的指令是 1 字节长的指令,则它不受异常处理程序的保护 - 这在第 4 节的脚注中列出4.10.

      【讨论】:

        【解决方案4】:

        我相信每个方法的字节码大小限制为 64kb。

        【讨论】:

        【解决方案5】:

        我记得曾经在 Tomcat 4 的复杂 JSP 页面中遇到过这个限制(过去人们仍在使用 JSP)。从 JSP 生成的 java 文件有一个方法太大而无法编译,我想我必须拆分文件或做一些其他噱头,这在可读性方面当然是个好主意。

        Sun 的错误跟踪器告诉我一些人 still have the same problem

        【讨论】:

        • 去过那里。在一个 JSP 上工作,该 JSP 在一个循环中包含了一大堆 JSP,或者类似的东西。
        猜你喜欢
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-12
        • 2011-02-26
        • 2015-09-10
        • 1970-01-01
        相关资源
        最近更新 更多