問題タブ [code-maintainability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
523 参照

sql - テーブルの列の追加/削除 - コードのメンテナンス/最適化

大きなプロジェクトのコードを維持する最良の方法は何ですか?

1000 個のストアド プロシージャがあり、新しい列をテーブルに追加 (または削除) する必要があるとします。

影響を受ける可能性のあるストアド プロシージャが 1 ~ 2 個または 30 個ある可能性があります。

テーブル名を 1 回「検索」するだけでは不十分な場合があります。たとえば、テーブルで挿入/更新/削除が行われる場所だけを知る必要があるとします。

'insert tablename' を検索するのは良い考えかもしれませんが、これらの 2 つの単語または 2 つのスペース、または TAB の間にスペースがある可能性があります... テーブル名は '[tablename]' のように書かれている可能性があります。3 つすべて (insert /更新/削除。)

私は基本的にある種の「制限された依存関係」を探しています

これはどのように処理されるのが最善ですか?

  1. この種の情報を含むデータベース テーブルを保持し、ストアド プロシージャに変更を加えるたびにそのテーブルを変更しますか?

  2. 各挿入/更新/削除の横にコメントとして特定のコードを保持すると、必要なものを検索できますか? 例: 'insert_tablename'、'update_tablename'、'delete_tablename'

  3. 誰かがより良いアイデアを持っていますか?

0 投票する
2 に答える
281 参照

java - SQL クエリと (Java) コードでの値の選択

テーブルの null 許容列の列の値を使用して、整数の 3 つの値のいずれかを選択する必要があります。

少なくとも 2 つの方法があります。1) SQL を使用してすべての作業を行う: null 値をテストし、他の値から選択するか、2) 値を読み取り、コード (この場合は Java) を使用して選択します。

どちらが「より良い」か、つまり。理解しやすく保守しやすい?他に決定する指標はありますか?

例として、次のコードがあります。

0 投票する
0 に答える
74 参照

dictionary - 保守性を高めるために「 switch...case... 」を「辞書」に置き換える方法

私のコードでは、次のようなスイッチケースがあります

「switch...case...」の増加により、コードのメンテナンス作業が増えています。コードをディクショナリまたは戦略パターンに変換して、メンテナンス性を高める方法を考えています。

ちなみに、 のような順序1のプロパティは、 inは string 型ですが、in int 型など"GROUPNAME""GROUPMASTERID"型が異なります。"GROUPNAME"(x=>x.GROUPNAME)"GROUPMASTERID"(x=>x.GROUPMASTERID)

誰か手がかりを教えてもらえますか、本当に感謝しています

0 投票する
1 に答える
24 参照

javascript - オブジェクト変数のイベント

次のように、jQuery イベントをオブジェクト変数内に配置できますか。

もしそうなら、あなたはそれをどのようにメソッドと呼びますか? イベントにバインドできますか?私が質問している理由は、いくつかのスパゲッティ コードを (大量に) 変更して、すべてを書き直すことなく維持しやすくしようとしているからです。どんな洞察も大歓迎です。

0 投票する
3 に答える
302 参照

java - Javaでifとtry/catchを終了して他の場所(gotoなど)に分岐する方法は?

ラベルを使用しない (コードを繰り返したり、メソッドを作成しすぎたりしない) ことで、この Java コードを改善することはできますか?


編集:

break/の使い方を間違えましたlabel。私はそれらをgoto(code afterlab1は if の場合にも実行する必要がありますr!=null。これは目的ではありません。ブレークはラベルを前方に参照できないため、そのようなコードはコンパイルできませんgoto。Java には同等のもの (どこにでも分岐できるステートメント)がないことを理解しています)。 .

Exception1外側ifを強制的に終了させるカスタムを使用してコードを記述しました。

これはコード ファッション コンテストの勝者にはなりませんが、少なくとも機能します。回答とコメントをありがとうございます。

0 投票する
1 に答える
63 参照

c# - コンパイル時に未知の順序で多くのリストを反復するアルゴリズムを設計する方法は?

ユーザー定義の設定に従ってデータを処理するプログラムを作成しています。処理中に、これらのユーザー定義の設定に従って反復する必要がある関連リストがいくつかあります。ユーザーは、これらのリストが繰り返される順序を決定します。

非常に保守しやすいコードを保持しながら、これらのリストを反復するためのアルゴリズムをどのように設計できるか疑問に思っています。ここでの考え方は、各ケースがリストの 1 つの反復を行う巨大なスイッチ ケースを持つ関数に終わらないようにすることです。

例:
処理する必要があるデータがさまざまな種類の食品のリストであるとします。ユーザーは、異なる食品グループが処理される順序を指定する必要があります。食品グループは、さまざまな食品を格納する単純なリストです。

ユーザーが希望する注文は、別のリストに保存されます。以下に、考えられる順序の 1 つを示します。

それがどのように機能するかを説明するために、望ましくないスイッチケースを使用します。

私のアプリケーションでは、case ステートメントには、実際には、例の単純な foreach ループよりも多くのコードが含まれます。このアルゴリズムを設計するより良い方法はありますか? 不要ではありますが、このようなアルゴリズムを設計するスケーラブルな方法もあるのだろうかと思っています (新しい食品グループを追加/削除してもアルゴリズムは壊れません)。

0 投票する
1 に答える
577 参照

oracle11g - Oracle DB サーバー名を照会して条件付きコンパイルで使用する方法はありますか?

2 つの異なる Oracle 11g2 システムで実行されるコード パッケージを維持しようとして、コードの行を変更するのを忘れてしまいました。特定のデータ セットを使用して 1 つのシステムで開発し、別のデータ セットを使用して別のシステムでテストします。

違いはそれほど大きくありませんが、パッケージを実行するには、2 つの異なるパッケージの 2 つの異なるクエリで 1 つのフィールド名を変更する必要があることが含まれます。あるシステムでは 1 つのフィールドを使用し、別のシステムでは... 別のフィールドを使用します。データベースのスキーマ名、オブジェクト名、およびフィールド名は同じですが、ホスティング システムのサーバー名は異なります。

変更は文字通り次のように簡単です

クエリの 1 つでフィールド名の変更の 1 つを見逃しており、数日間の実行はくだらないものです。

ばかげた理由でここには触れませんが、開発者の変更をバージョン間で手動で変換および再処理し、必要な変更をシステム間で転送および更新するなど、すべてのコードを維持することになります。

コードを交換するために提供しなければならない反復入力を減らそうとしています。このステップを自動化して、再び見落とさないようにしたいと考えています。

Oracle からデータベース システムの名前を取得し、単一行を自動的にスワップする条件付きコンパイルを実装したかったのですが、Oracle の条件付きコンパイルにはパッケージの静的定数 (この場合はブール値) が必要です。sys_context 関数を使用して値を入力できません。または、ME が sys_context からデータを取得して条件付きで評価し、それを定数に割り当てることはできないようです。オラクルには何もありません。DB_DOMAIN、DB_NAME、または SERVER_HOST はシステムを区別するために機能する可能性がありますが、情報を使用する方法が見つかりません。

別のシステムにコードを移動するときに手動で設定するグローバル定数を作成するというオプションもありますが、この時点では、転送のために実行する手順が非常に多いため、それを台無しにしてしまうのではないかと心配しています。 . これを他のパッケージや自分のプロセスから独立させたいと思います。

これを行う良い方法はありますか?

-------- 編集 手順を試して、週末にビューを把握しようとします。最終的に、プロジェクトは「ただ実行する」ことを期待する顧客に引き渡されるため、スイッチの目的や、パッケージに「特別な」コードが含まれている理由を理解できません。そして、彼らはそうする必要はありません...彼らがコメントを見るかどうかさえわかりません。ありがとうございました

0 投票する
1 に答える
237 参照

c# - このコードの保守性指数が 40 しかない理由を誰か教えてもらえますか?

このメソッドの保守性指数 (Visual Studio で計算) が 40 しかない理由がわかりません。60 を超えるには、最初の 2 行を除くほぼすべての行を文字通り削除する必要があります。