問題タブ [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.
c# - VisualStudioのコードメトリックの保守性インデックスを気にしないでください。
Visual Studioを実質的に毎日使用した後、私は今日、コードメトリクスに出くわしました...実質的に私の人生全体。VS2008頃からあると思いますが、気になりませんでした。
私のソリューションのほとんどのプロジェクトには、かなり高い保守性指標があります。私の「スクラップ」プロジェクトでは、85、83、86、76、59です。私はそれらのスクラッププロジェクトを見栄えよくするためにほとんど努力をしなかったことを覚えているので、私はインデックスに同意します。
しかし、それが完璧な手段であるとは想像できません。どのような状況で、私はインデックスに正当に反対する必要がありますか?
perl - Perlコードを保守可能にする理由は何ですか?
私は数年前からPerlを書いていますが、これはテキスト処理に適した言語です(私が取り組んでいる遺伝学/ゲノミクスの問題の多くは、テキスト処理の問題に簡単に還元されます)。言語としてのPerlは非常に寛容であり、Perlで非常に貧弱で機能的なコードを書くことは可能です。つい先日、私の友人は、Perlを書き込み専用言語と呼んでいると言いました。一度書いて、一度理解して、終わった後に戻って修正しようとしないでください。
私は時々悪いスクリプトを書いたことで間違いなく罪を犯しましたが、Perlで非常に明確で保守しやすいコードも書いたように感じます。しかし、誰かが私にコードを明確で保守しやすいものにする理由を尋ねた場合、私は自信を持って答えることができません。
Perlコードを保守可能にする理由は何ですか?あるいは、もっと良い質問は、Perlコードを維持するのが難しい理由です。コードを保守するのは私だけではなく、私のような他の貢献者はプロのPerlプログラマーではなく、プログラミングの経験を持つ科学者であると仮定しましょう。
java - Google App Engine+Javaの代替手段
Javaを使用してGAEでWebアプリケーションを開発する場合、将来、移行の機会は簡単になりますか、それともGAEに固執しますか?
Google App Engine + Javaの他の代替手段は何でしょうか?
いいえ:
c# - クラフトコード。救助へのIoC
IoC コンテナーの有用性についての質問で、受賞者は、IoC コンテナーを使用すると次のことができると述べました。
これに:
質問:
- このメリットを提供する魔法の IC コンテナーはどれですか?
- これを実装する例は?
- 欠点はありますか?
- 複雑な依存関係を持つプロジェクトで、これらのオブジェクトにデータ バインディングを適用しようとすると泣くことがありますか?
architecture - 専門的にアプリケーションをホット アップデートする方法
大きなアプリケーション (複数のアプリケーション サーバーとロードバランサーを使用) が、ユーザーのためにオフラインにすることなく、実際のバージョンにホット アップデートされるのはどの程度なのだろうか。ここではデータベース スキーマをスキップします - アプリケーション層のみ。
たとえば、複数の GlassFish サーバーが haproxy によって分散されており、複数のサーバー上にあるアプリケーションを更新したいとします。
この場合、何が使われますか?これは複雑かもしれませんが、方法について教えてください。
java - グローバルな場所に例外メッセージを保存する
例外メッセージが保存される単一の場所が欲しいです(これらはユーザー向けではありません)。また、さまざまなエラーメッセージやコードが含まれる可能性のあるいくつかの例外もあります。これらのコードは、文書化とコミュニケーションの目的でのみ使用されます。ただし、すべてのエラーメッセージを1か所にまとめることは、エラーを参照し、運用担当者に推奨される修正を提供するために非常に役立ちます。
私はこれらを検討しています:
- すべての例外メッセージのResourcebundle
- メッセージとコードを含む各列挙型を持つグローバル列挙型
- すべてのExceptionクラス内の列挙型。それぞれに、例外が持つことができるメッセージとコードが含まれます。
どちらが最良のオプションですか?
java - Android プラットフォームでの sqlite データベースへの拡張可能なアクセス
私はAndroid SDKとデータベースにかなり慣れていないので、これに対する答えをかなり長い間探していました。
データベース内に複数のテーブルを持つアプリを構築しようとしています。たとえば、武器、鎧などの 1 つ。
ただし、テーブルの作成、DatabaseHelper 内部クラス、およびデータの入力をすべて処理する DatabaseManager クラスは、高度なメンテナンスを必要とする非常に大きなクラスを作成しています。テーブルの列を追加または削除するたびに、コードのかなりの部分を変更する必要があります。データベースの行 - テーブルを作成するヘルパー クラスのコード - 特定の更新メソッド
私の質問は次のとおりです。確かに、このシステムをコーディングするためのより良い方法があるに違いありません。データベースを使用するのが最善の方法ではないかもしれません。または、大学と私の最大のクラスで Java しか学んだことのないような大規模なクラスに慣れていないだけなのでしょうか。わずか 400 ~ 600 行のコードで構成されます。
助けてくれてありがとう!
.net-4.0 - Entity FrameworkのInclude()でマジックストリングを回避するための組み込みの方法はありますか?
さて、Includeを使用して関連オブジェクトをロードするように指示するエンティティフレームワーククエリがあります。
var employees = _entities.Employees.Include("Manager").ToList()
includeを使用することで、すべての従業員のマネージャーレコードに対してクエリを生成することを回避します(代わりに、クエリでフレンドリーなJOINが使用され、データベースが再び煩わされることはありません)。
しかし、マジックストリング「Manager」の使用は、特に、おそらくより原始的で、迅速で汚いLinq2SQLから来た後は、不安になります。コーディングの観点からは、それはロードされた銃のようなものであり、コンパイル時にキャッチされるべきであったランタイム例外をスローする準備ができています。また、リファクタリングに大きなダンパーをかけます。
これを回避するための組み込みのプロパティまたはメソッドはありますか?たとえばManager.EntityKeyPropertyName
、静的な文字列プロパティとして表示されますが、これは私が望んでいるものではないようです。ハードコードされた定数のリストを手動でどこかに追加したくないのですが、裸のインテリセンスブラインドマジックストリングよりも優れています。
c# - SqlDataReader のすべての行に対してデリゲートを呼び出すメソッドを使用することの欠点は何ですか?
新しいアイデアを見つけると、いつもそれに固執し、弱点が見えません。大規模なプロジェクトで新しいアイデアを使用し始めたときに悪いことが起こり、後でそのアイデアが非常に悪く、どのプロジェクトでも使用すべきではないことに気づきました。
そういうわけで、新しいアイデアを持っていて、それを新しい大規模なプロジェクトで使用する準備ができているので、それについてあなたの意見、特に否定的な意見が必要です。
長い間、データベースに直接アクセスする必要があるプロジェクトで、次のブロックを何度も入力したり、コピーして貼り付けたりすることに飽き飽きしていました。
だから私は、上記と同じことをするためにそのようなものを書くことを可能にする小さなクラスを作りました:
2 番目のアプローチは次のとおりです。
短く書くと、
読みやすく(少なくとも私にとっては、実際にははるかに読みにくいと言う人もいるかもしれません)、
エラーが発生しにくい (たとえば、最初のケースでは、接続を使用する前に接続を開くのを忘れたり、
while
ブロックを忘れたりするなど)、インテリセンスの助けを借りてより速く、
特に単純なリクエストの場合、はるかに凝縮されています。
例:
小さなプロジェクトで simple とジェネリックを使用してそのようなことを実装した後ExecuteNonQuery
、コードExecuteScalar
がはるかに短くなり、保守が容易になったことを嬉しく思います。ReadManyRows
DataAccess<T>.ReadManyRows
私は2つの欠点しか見つけませんでした:
要件の変更によっては、大幅なコード変更が必要になります。たとえば、トランザクションを追加する必要がある場合、通常の
SqlCommand
アプローチで非常に簡単に行うことができます。代わりに私のアプローチを使用すると、プロジェクト全体をSqlCommand
s とトランザクションを使用するように書き直す必要があります。コマンド レベルでのわずかな変更により、私のアプローチから標準
SqlCommand
の s に移行する必要があります。たとえば、1 行のみを照会する場合、このケースを含めるようにクラスを拡張するか、代わりにコードで withをDataAccess
直接使用する必要があります。SqlCommand
ExecuteReader(CommandBehavior.SingleRow)
少しパフォーマンスが低下する可能性があります (正確な指標はまだありません)。
このアプローチの他の弱点は何DataAccess<T>.ReadManyRows
ですか?
xml - 属性を追加しますか、それともXML階層に新しいレベルを作成しますか?
私は現在、2つのレベルしかないXML階層用に作成されたXMLドキュメントに取り組んでいます。今のところ、そのファイルで機能するコードのほとんどを壊してしまう1対多の分類を追加したいと思います。
その分類を新しいレベルとして追加することも、同じレベルの属性として実装することもできます(ほとんどタグ付けのように)。
現在:
提案:
また:
どちらの方法がより保守可能ですか?