我主要课程中有大约10k行代码,我应该担心吗?

时间:2013-06-28 11:51:00

标签: java class main

我正在使用NetBeans设计器创建Java框架。它非常广泛,主要是从数据库中插入和获取数据。

事情是我的主类目前有10663行(7000是由设计师插入,框架设计 - 生成代码)。这会导致任何问题吗?我是Java的新手,并且已经读过一个类不应该有超过20个方法/ 500行代码。我只有大约15种方法但是10k行代码,这会有问题吗?

无法从OOP角度拆分或重新思考代码,因为它不是真正的OOP问题,我只是在按下某些按钮时使用来自MySQL DB的数据填充一些表(许多表)/使用来自多种形式。

编辑: 我觉得我没有提供足够的细节,所以我会在这里添加所有要知道的内容。这是我的大学毕业论文基本上,在我拿到我的成绩和毕业后,它将不再使用或更新。它是关于为酒店接待创建软件产品 - 从添加客户,签到,管理提供给客户的基本/额外服务等等。当我开始项目时,我有0个Java知识,我一直在学习它。 我有一个Java文件,可以处理所有与数据库相关的内容,例如添加/删除/更新记录等。 我有一个包含所述问题的表单文件--11k行代码。以下是大多数情况:

    private void cCautaActionPerformed(java.awt.event.ActionEvent evt) {                                       
    ArrayList<ArrayList<Object>> result;
    ArrayList<String> attributes=new ArrayList();
    String where = "first_name LIKE '%" + cclientName.getText() + "%' OR last_name like '%" + cclientForename.getText() +"%'";
    attributes.add("id");
    attributes.add("first_name");
    attributes.add("last_name");
    attributes.add("address");
    attributes.add("number");
    attributes.add("town");
    attributes.add("county");
    attributes.add("notes");
    attributes.add("cnp");
    attributes.add("type");
    csearchedCustomersList.clear();

    try {
        result = DataBaseConnection.getTableContent("customers", attributes, where, null, null);
        DefaultTableModel model = (DefaultTableModel) csearchTable.getModel();
        DefaultTableCellRenderer centerRender = new DefaultTableCellRenderer();
        centerRender.setHorizontalAlignment( JLabel.CENTER );
        csearchTable.setDefaultRenderer(Object.class, centerRender);
        model.setRowCount(0);
        if (result.isEmpty()) {
            errorMessage("error", "No client found with the specified name!", "Search Error");
        }

        for (int i = 0; i < result.size(); i++) {
            Customers cust = new Customers((String)(result.get(i).get(0)),
                (String)(result.get(i).get(1)),
                (String)(result.get(i).get(2)),
                (String)(result.get(i).get(3)),
                (String)(result.get(i).get(4)),
                (String)(result.get(i).get(5)),
                (String)(result.get(i).get(6)),
                (String)(result.get(i).get(7)),
                (String)(result.get(i).get(8)),
                (String)(result.get(i).get(9))
            );
            csearchedCustomersList.add(cust);
            model.addRow(result.get(i).toArray());
        }
    } catch (SQLException ex) {

    }
} 

例如,这是搜索按钮的代码,该按钮使用与搜索到的术语(名称和名称)匹配的客户填充表格。 因此DataBaseConnection可以完成所有数据库工作。问题是,当我尝试添加任何东西 - 一个新的JPanel,更改按钮的图标..基本上添加任何新代码我得到:错误:找不到或加载主类酒店.hotel。我不知道该如何处理这个问题,因为正如我所说,我对Java很新。

4 个答案:

答案 0 :(得分:3)

当代码由工具自动生成时,它通常不会成为问题,因为它通常不应该是人类可读的。

但是,当您将自动生成的代码与自己的代码混合时,它会出现问题。您通常无法在不破坏自己的工作的情况下重新生成代码,读取代码的工具会因您的修改而感到困惑,并且修改机器生成的代码很少是一种愉快的体验。

当某种可能的情况下,你应该避免编辑自动生成的代码,并在另一个类中进行任何自己的编程。

您并没有告诉我们您的计划,所以我们只能猜测改善课堂设计的好方法。但是当你有多个表,按钮和表单时,为每个表创建一个单独的类是有意义的。

答案 1 :(得分:3)

是的,你应该担心。问题是你的程序缺乏合理的结构。它不仅仅是关于OOP,代码生成或大型源文件。你可以侥幸逃脱,因为程序仍然相对较小,并且实际上并不需要考虑可维护性。

缺乏合适的结构会导致无法忍受的复杂性和认知负担。最终向应用程序添加新功能或更改任何行为将变得非常不愉快,困难甚至不可能。看来你正要打那堵墙。

您可以从用户界面中分离所有与数据库相关的代码。您作为示例提供的侦听器方法不应该处理连接和查询字符串等。它真正需要的功能是从某个存储库中获取某些客户。您需要考虑图层和/或模块。将生成的代码与写入分开也是明智的。

简单的MVC - 结构可以适用于您的应用程序。 Here's一个简单的例子,说明如何使用Swing实现它。

答案 2 :(得分:1)

是的,担心。除了.form文件被破坏之外,还有更多麻烦。分割和分离视图,JPanel表单。数据可能真的是数据i.o.硬编码。

答案 3 :(得分:0)

我知道来自NetBeans设计人员的代码......它很快就会变得非常混乱。但只要你只与设计师一起工作就应该没问题。 一段时间后,较长的课程往往变得不可维护。您应该将一些代码放入单独的类中。 您是否使用OR映射器进行数据库抽象?如果是这样,您可以为每个表单创建实体类,这将大大简化您的代码