0

NetBeans デザイナで Java フレームを作成しています。それは非常に広範で、主にDBへのデータの挿入と取得に関するものです。

私のメインクラスには現在10663行あります(7000行はデザイナー、フレームデザイン - 生成されたコードによって挿入されます)。これにより問題が発生しますか? 私はJavaが初めてで、クラスには20メソッド/ 500行のコードを超えてはならないことを読みました。約 15 個のメソッドしかありませんが、コードは 10,000 行あります。これは問題になりますか?

実際には OOP の問題ではないため、OOP の観点からコードを分割または再考することはできません。いくつかのボタンが押されたときに、いくつかのテーブル (多くのテーブル) に MySQL DB からのデータを入力するか、多数のフォームからのデータで DB を更新します。

編集:十分な詳細を提供していないように感じるので、知っていることをすべてここに追加します. これは基本的に私の大学の卒業論文です。成績を取得して卒業した後は、二度と使用したり更新したりすることはありません。ホテルのレセプション用のソフトウェア製品を作成することです。顧客の追加、チェックイン、クライアントに提供される基本/追加サービスの管理などのすべてです。プロジェクトを開始したとき、私は Java の知識がありませんでした。レコードの追加/削除/更新など、DB関連のすべてを行う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 はすべての DB 作業を行います。問題は、何かを追加しようとするときです-新しいJPanel、ボタンのアイコンを変更します..基本的に、次の新しいコードを追加します:エラー:メインクラスHotel.hotelが見つからないか、ロードできませんでした。私が言ったように、私はJavaにかなり慣れていないので、これにどのようにアプローチすればよいかわかりません。

4

4 に答える 4

3

はい、心配する必要があります。問題は、プログラムに合理的な構造が欠けていることです。OOP、コード生成、または大きなソース ファイルだけではありません。プログラムがまだ比較的小さく、保守性を実際に考慮する必要がないという理由だけで、それを回避できます。

適切な構造の欠如は、耐え難いほどの複雑さと認知的負荷につながります。最終的には、アプリケーションに新しい機能を追加したり、動作を変更したりすることは、非常に不快で困難になり、不可能になることさえあります。その壁にぶち当たりそうです。

データベース関連のすべてのコードをユーザー インターフェイスから分離することから始めることができます。例として挙げたリスナーメソッドは、接続やクエリ文字列などを処理するべきではありません。本当に必要な機能は、あるリポジトリから特定の顧客を取得することです。レイヤーやモジュールについて考える必要があります。生成されたコードと書かれたコードを分離することも賢明です。

単純なMVC構造がアプリケーションで機能する可能性があります。これを Swing で実装する方法を示す簡単な例を次に示します

于 2013-06-28T13:59:05.930 に答える
0

私は、NetBeans デザイナーのコードを知っています... 非常にすぐに乱雑になります。ただし、デザイナーと一緒に作業するだけであれば問題ありません。長いクラスは、しばらくすると保守できなくなる傾向があります。コードの一部は別のクラスに入れる必要があります。データベースの抽象化に OR マッパーを使用していますか? その場合、コードを大幅に簡素化するフォームごとにエンティティクラスを作成できます

于 2013-06-28T12:00:24.927 に答える