問題タブ [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 投票する
3 に答える
148 参照

sql-server - 新しいデータベースを作成するとき

一般的なデータベース設計の質問があります。既存のテーブルに新しいテーブルを追加するのではなく、新しいデータベースを作成する方がよいのはいつですか。質問は、設計/保守性とパフォーマンスの問題に関連しています。

背景:RM2と呼ばれるDBに毎晩データをインポートすることにより、顧客のメインテーブルをミラーリングしています。一部の新しい(ASP.Net-)プロジェクトもこのデータにアクセスする必要があります。プロジェクトごとに新しいデータベースを作成するか、それらのテーブルをRM2(現在のサイズ:37991.94 MB)とマージする必要があるかどうか疑問に思っています。

0 投票する
7 に答える
4024 参照

performance - データベースの正規化設計 - 単一または複数のテーブル

これは、データベースで 1 つのテーブルまたは 3 つのテーブルとして表す必要がありますか? 私と私の友人はこれについて異なる意見を持っているので、これについての一般的な見解を見たいと思います. (おそらく、どちらかのソリューションに投票する必要がありますか?)

1 テーブル アプローチ:

長所:

  • パフォーマンス (2 つではなく 1 つの挿入、FK チェック、結合なし)
  • おそらくスペースが少なくて済みます (追加のテーブルにはオーバーヘッド + インデックス + 追加の ID フィールドがあります)
  • 3 つではなく 1 つのテーブル
  • 2 + 3 フィールド (または何?) のためだけに新しいテーブルに分割することはほとんど正当化できません。

短所:

  • Null 可能フィールド
  • 潜在的に余分な「タイプ」列 (スキップ可能)
  • 3NFを突破(?)

賛否両論と個人的な意見をお願いします。:)

編集:実際に使用しているエンティティとは異なるエンティティを使用して例を単純化しようとしたため、モデルを変更するための提案はあまり役に立ちません。つまり、ドメイン モデルよりも技術的な側面に重点を置いてください。

0 投票する
4 に答える
3712 参照

sql-server - SQL の定数の最適なパターンは?

SQL Server の定数の欠如を「克服」するために使用されるいくつかのパターンを見てきましたが、パフォーマンスと可読性/保守性の両方の懸念を満たすものはないようです。

以下の例では、テーブルに不可欠な「ステータス」分類があると仮定すると、オプションは次のようになります。

  • ハードコーディングするだけで、おそらくステータスを「コメント」するだけです

  • 州のルックアップ テーブルを使用し、このテーブルに結合して、WHERE句がフレンドリ名を参照するようにします。

サブクエリ:

または加入

  • 定数を返す一連のスカラー UDF が定義されています。

その後

(IMOこれはデータベースに多くの汚染を引き起こします-これはOracleパッケージラッパーでは問題ないかもしれません)

  • また、値を持つ定数を行または列として保持するテーブル値関数を使用した同様のパターンはCROSS APPLIED[Table]

他の SO ユーザーは、この一般的な問題をどのように解決しましたか?

編集:報奨金 - Remus の回答とコメントに従って、DBProj DDL / Schema スクリプトで $(variables) を維持するためのベスト プラクティスの方法はありますか?

0 投票する
5 に答える
216 参照

regex - 1行で書かれた正規表現をどのように理解しますか?

これは、きちんと文書化された正規表現であり、理解、保守、および変更が容易です。

しかし、これらをどのように処理しますか?

それを理解し、その機能を説明するある種の美化器はありますか?

0 投票する
10 に答える
1794 参照

c++ - 私たちのコードはひどくて、私はそれを修正する力がありません。ヘルプ!

私たちのコードは最悪です。実は、はっきりさせておきます。私たちの古いコードは最悪です。デバッグするのは難しく、ほとんどの人が理解したり覚えたりすることのない抽象化でいっぱいです。ちょうど昨日、1年以上働いてきたエリアで1時間デバッグをして、「うわー、これは本当に痛い」と思っていました。それは誰のせいでもありません-最初はすべてが完全に理にかなっていると確信しています。最悪の部分は通常、それはただ機能します...あなたがその快適ゾーンの外で何もするように頼まないという条件で。

私たちの新しいコードはかなり良いです。私たちはそこでたくさんの良いことをしていると思います。それは明確で、一貫性があり、(うまくいけば)保守可能です。継続的インテグレーションのためにHudsonサーバーを実行しており、単体テストスイートの始まりが整っています。問題は、私たちの経営陣が新しいコードを書くことに焦点を合わせていることです。古いコード(または古い新しいコード)にTLCを与える時間はありません。いつでも、スクラムバックログ(6人の開発者用)には約140のアイテムがあり、約12の欠陥があります。そして、それらの数はあまり変化していません。燃え尽きるのと同じくらい速く物を追加しています。

では、オールドコードの奥深くに潜むマラソンデバッグセッションの頭痛の種を避けるために何ができるでしょうか?すべてのスプリントは、新しい開発と見事な欠陥でいっぱいになっています。具体的には...

  • メンテナンスとリファクタリングのタスクが機能するのに十分高い優先度を得るのを助けるために私は何ができますか?
  • 新しいコードがすぐに腐敗するのを防ぐために採用しているC++固有の戦略はありますか?
0 投票する
3 に答える
1947 参照

delphi - Delphi:保守性仮想vs仮想抽象

私は数ヶ月前にたくさんのコードを書いていましたが、今はそれに何かを追加しています。関数の約2/3が抽象で、残りの1/3が仮想であるクラスから派生した一連の関数を作成したことに気付きました。

私は見るのにかなりうんざりしています:

基本クラス用にこれを持っているとき:

そして、次のようになってしまうのは嫌いだろう。

そして、なぜ何かがうまくいかなかったのか疑問に思います。

一部の関数を実装しなかったために抽象エラーが発生する可能性があるかどうかをコンパイラーが通知するため、抽象関数を使用するのが好きです。

私の質問は、私はまだ比較的新しいDelphiプログラマーであり、8年間何も維持する必要がなかったので、この方法でコードを整理する(つまり、継承したばかりの関数を削除する)のに時間をかける価値があるかどうかです。基本クラスの関数を抽象から具体に変更します)

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

php - スケーラブル(拡張可能)で保守可能で疎結合のソフトウェアを構築するための最良の手法は何ですか?

私はいくつかのmvcフレームワークが実装する「モジュール」の概念を試してきましたが、それは良い解決策のように見えますが、TDDもありますが、私が見逃したデザインパターンのような何かがあるに違いないと思います(私は知っているだけですいくつか)、それは私が制限なしで(コードで)成長できるアプリケーションを構築することを可能にします。

何かご意見は?

編集:モジュールのもう1つの優れた点は、アプリケーションに依存しない方法でモジュールを構築できるため、再利用できることです。

0 投票する
4 に答える
6105 参照

sql-server - CTEにするかしないか

あまりにも長い間 SQL2000 を使い続けてきたので、共通テーブル式にはあまり触れていません。

私がここ (#4025380)ここ (#4018793)で示した回答は、CTE を使用しなかったという点でフローに反しています。

再帰の場合、それらは非常に簡単であり、それらを使用することで大幅に簡素化できるクエリがいくつかあることを理解していますが、どの時点でそれらの使用が軽薄になるのでしょうか? サブクエリや結合よりも優れたパフォーマンス上の利点がありますか? それらは本当にコードを簡素化し、より保守しやすくしていますか?

要するに、「より少ない」構文よりもCTEを使用するのが良い方法はいつですか。

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

asp.net - 依存性注入とコードの保守性

インターフェイスを使用して依存性注入を提供する (vb.net/asp.net) プロジェクトに取り組んでいます。しかし、私には、コードの保守性が失われたように感じます。コードを読みたいときに、使用されている関連クラスのコードに簡単にジャンプすることはできません。インターフェイスしか見えないので、プロジェクトを調べて、どのクラスが実装を行っているかを突き止める必要があります。これは私の生産性を著しく低下させます。

はい、さまざまな置換クラスを使用してインターフェイスを実装できるようになりました。しかし、たとえば、データ ソースをすぐに変更しないことはわかっています。データ ソースを交換する機能を有効にする必要はありません。この依存性注入はすべてやり過ぎのように思えます (実際、これが存在する唯一の本当の理由は、単体テスト用のモック クラスをサポートするためです)。私は実際に、DIが実際には保守性に優れていると述べている場所をいくつか読んだことがあります。ただし、それは、すべてがどこにあるかを既に知っており、更新する必要があるクラスを知っていることを前提としています。どこを見るべきかを見つけることは、私を殺している部分です。

だから、私の質問は次のとおりです。コードをトラバースするより良い方法はありますか? コードをより保守しやすくするためのより良い方法はありますか? 私たちはそれを間違っているだけですか?それとも、これはコースのパーですか?

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

visual-studio-2008 - 強く型付けされたテーブルアダプターとデータテーブルを取り除く方法

私たちの組織では、強く型付けされたテーブルアダプターとデータテーブルに大きく依存する VS 2005 Web サイトを維持しています。言うまでもなく、多くの理由から保守性の悪夢です。

  • 新しいテーブル アダプターを生成するには、MSSQL2005 以下のデータベースに接続する必要があります。データベースを MSSQL2008 にアップグレードしたため、これは本当に大変なことです。
  • 私たちは2010年の終わりにいて、このプロジェクトにVS2010を使用したいと思っていますが、アップグレードするとコンパイルに失敗します。私たちはこれを機能させるために取り組むことができると思いますが、むしろこの恐ろしい技術をまとめて取り除きたいと考えています.
  • 生成されたコードは巨大で見栄えが悪く、LSD のようなものなしでは誰も理解できないと思います。

この時点で、これらのテーブルアダプターを取り除くために最低限のことをしたいと思っています。時間がなく、「機能する」ため、管理の優先度が低いからです。したがって、nHibernate が革命であると示唆することは、おそらく実現しないでしょう。

前もって感謝します。