我正在维护一个40K行长的Java类..问题?

Bil*_*ory 21 java maintenance legacy-code

这可能是导致删除的主观问题,但我真的想要一些反馈.

最近,我转到另一个非常大的企业项目,在那里我作为开发人员工作.我惊讶地发现项目中的大多数类都是从8K到50K行的长度,方法是1K到8K行.它主要是处理数据库表和数据管理的业务逻辑,充满了处理用例的条件语句.

类在大型企业系统中是否常见?我意识到没有看代码很难做出决定,但是你曾经在一个有这么大的类的系统上工作吗?

Pet*_*rey 37

以下是JDK 6中十大类的7209 .java文件的行数.这些类包含大量的注释,这些注释可能比代码更长.

4495 ./javax/sql/rowset/BaseRowSet.java
4649 ./java/awt/Container.java
5025 ./javax/swing/text/JTextComponent.java
5246 ./java/util/regex/Pattern.java
5316 ./javax/swing/JTree.java
5469 ./java/lang/Character.java
5473 ./javax/swing/JComponent.java
9063 ./com/sun/corba/se/impl/logging/ORBUtilSystemException.java
9595 ./javax/swing/JTable.java
9982 ./java/awt/Component.java
Run Code Online (Sandbox Code Playgroud)

我同意一个打印的页面足够长的方法.真的应该需要超过10K线路的抄本.


Bal*_*usC 14

这绝对不对.对于单个工作单元,方法不应包含足够多的代码.类不应包含比与类实例的状态相关的方法更多的方法.

这太像神对象的反模式.我个人会放弃该项目并寻找另一个项目.


Ser*_*lat 9

不看代码,实际上很容易做出决定.一个类永远不应该是40K行,永远不应该是一个方法甚至1K.通常情况下,如果我无法在一张纸上打印出方法并看到开始和结束括号,我会找到一种方法将其拆分.

我可能会问,他们是否正在使用OOP原则,或者他们是否尝试将Java更多地用作功能或程序语言?我无法想象一个拥有40K线路级别的真正OOP项目.

  • 使用像'never'这样的单词你没有问题吗?...你的纸张概念对我来说是可怕的. (3认同)
  • 我可以理解它偶尔比一页更长,这就是为什么我没有说"从不"那里.但是,我对其他两个陈述和我在那里使用"从不"没有任何问题. (2认同)

duf*_*ymo 6

哦,我认为这是一个可怕的迹象,我不必看代码就这么说.听起来像需要大量的重构努力.

让我猜一下 - 你也没有对系统进行单元测试.你有同情心.

  • @Cthulhu*我可以处理没有单元测试.*这比Cthulhu所说的"真实"更糟糕:-) (3认同)

Adr*_*ith 5

除了其他答案中描述的软件维护问题之外,请注意编译的Java方法不得超过64k字节的技术限制.(对应的代码行数将取决于行本身.)

http://www.databasesandlife.com/java-method-64k-limit/