問題タブ [code-reuse]
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.
agile - 再利用の候補となるコードは?
リーンな小さなソフトウェア会社で働いていると想像してみてください。会社の将来の競争力は、再利用可能な優れたコード ベースを利用できるかどうかにかかっています。会社の再利用ポリシーを管理して、将来のバックボーンを提供すると同時に、今日提供できるようにすることが非常に重要になります。
私の考えでは、ビジネスで再利用可能なコードを書く理由は 2 つあります。1) 社内で共有し、将来的にスピードと効率を向上させるため 2) Web や他の人に公開することで、コードの改善に役立ちます (ある意味でのクラウドソーシング)。
もちろん、開発者は常に常識を働かせて再利用する必要があります。しかし、管理の観点からこれを処理するには、現在および将来の競争力を確保するための全体的なコード再利用のガイドラインが必要です。これらのガイドラインは、開発者が「私のコードは再利用の候補ですか?」と尋ねることを奨励するものです。これらのガイドラインには何を記載する必要がありますか?
私の最初の考え: 最下位レベルで再利用可能なコードを書く価値はありません (たとえば、文字列の末尾に「's」を追加するインライン コードがあります)。ふるいにかけて、誰かがすでにそれを行っていることを見つけることさえあります。また、最上位レベル、つまりアプリケーションで再利用可能なコードを書く価値もありません。顧客レポート アプリケーションが最終的に SQL クライアントに汎用化されてしまい、ほとんどのユーザーにとって役に立たないからです。
再利用可能なコードの主な障害: コードの存在を知らなければ再利用できません。信頼 – 完了しましたが、信頼できますか?; コードを一般化/再利用可能にする (および文書化する) のにかかった初期時間。
sql - SQL ストアド プロシージャでコードを再利用する方法は?
SQL Server 2005 を使用しています。すべてのデータ アクセスは、ストアド プロシージャを介して行われます。セレクション ストアド プロシージャは、常に複数の結果セットを返します。
例えば:
アプリケーションのデータ アクセス レイヤーは、結果に基づいてオブジェクト グラフを作成します (O/R マッパー スタイル)。
私が抱えている問題は、さまざまな請求書選択ストアド プロシージャがあることです。それらはすべて同じ構造を返しますが、選択基準が異なるだけです。たとえば、私も持っています:
そして、私は次のような他の多くを持っています:
私は多くの概念(顧客、従業員など)に対して同じパターンを持っています
大量のコードをコピーすることになり、メンテナンスは本当に大変です。コンセプトの「構造」が変わると、すべてのプロセスを修正する必要があり、非常にエラーが発生しやすくなります。
私の質問は次のとおりです。シナリオでコードを再利用する最良の方法は何ですか?
一時テーブルを使用するソリューションを考え出しました。しかし、それはあまりエレガントではありません。アイデアを共有させていただきます。必要に応じて、ソリューションの詳細を今後の投稿に投稿し、そのアプローチに関するコメントをお待ちしております。
ありがとう
c++ - 「あとで直す」という悪癖を克服する
コードをゼロから書き始めると、すべてを 1 つの関数にすばやく書き込んでしまうという悪い癖があります。その後、製品が動作するようになり、それを修正しようとすると、関数を作成し、何を渡す必要があるかを把握する必要があります。
プロジェクトがほぼ完了したときにクラスを再設計することが非常に困難になるため、最悪の事態になります。たとえば、通常、コードを書き始める前に計画を立てます。プロジェクトが完了したときに、クラスをよりモジュール化したり、継承を使用したりできたはずだと気づきました。基本的に、私は十分な計画を立てていないと思います。また、1 レベル以上の抽象化も行っていません。
結局、私は大きなメイン関数、1 つのクラス、およびいくつかのヘルパー関数を含むプログラムに行き詰まっています。言うまでもなく、再利用性はあまり高くありません。
誰かが同じ問題を抱えていて、これを克服するためのヒントはありますか? 私が念頭に置いていたことの 1 つは、メイン関数を疑似コードで作成することでした (詳細はあまりありませんが、必要なオブジェクトと関数を確認するには十分です)。基本的にトップダウンのアプローチです。
これは良い考えですか?他の提案はありますか?
vb6 - VB6アプリケーションでクラスを再利用するにはどうすればよいですか?
まず、私はVB6を使用しているので、VB6に適用される手法にあなたの親切な提案を限定してください。
上の図に示すように、相互に関連する一連のコントロールがあります。これには、いくつかのツリービュー、分割バー、リストビュー、サブフォーム(ユーザーコントロール)などが含まれます。
左側のツリービューノードをクリックまたは変更すると、右側のコントロールはそれに応じて表示を変更し、その逆も同様です。
舞台裏のデータはAccessデータベースに保持されています。
このデータ管理と表示のセットは、いくつかの異なるアプリケーションで使用されます。そこで、ロジックを実装し、これらのクラスモジュールをアプリケーションに何度も含めるために、いくつかのクラスを作成しました。
そのため、実際には「コピーアンドペースト」モードでクラスを再利用しています。動作しますが、問題があります。クラスを変更した場合、いくつかのアプリケーションで変更する必要があります。
最近、私はそれらをいわゆるActiveXコンポーネントにすることを考えています。しかし、アーキテクチャ全体を再利用するためにどの種類のActiveXコンポーネントを開発する必要があるのかわかりません。
一言で言えば、単に「コピーアンドペースト」するよりも、どうすればもっと優雅に再利用できるのか知りたいです。以下は、新しい「優雅な再利用」のいくつかのアイデアまたは期待ですが、それらに限定されません。
(1)デザイン時にいくつかのプロパティを設定できるように、プロパティページを持つActiveXコントロールのように見えることを願っています。
(2)アプリケーションが異なれば、右側のサブフォームは異なる情報を表示し、異なるコントロールを持ち、追加のコーディングと設計が必要になる場合があります。
(3)また、さまざまなアプリケーションのツリービューとリストビューの新しい動作をコーディングする必要があるかもしれません。この要件により、フォーム全体のユーザーコントロール全体が適切ではなくなります。MSDNは、「ActiveXコントロールへの参照は、クライアントアプリケーションに返さないでください」と述べているためです。
c - Cでの非常に単純なマップの実装(キャッシュ目的)?
gethostbyname()
ファイル内の URL を読み取り、各 URL ホストで実行するプログラムがあります。この呼び出しはかなり消費します。それらをキャッシュしたい。
キャッシュを行うために使用できる C 言語の非常に単純なマップ ベースのコード スニペットはありますか? (私は車輪を再発明したくないだけです)。
次の点が必要です。
- 寛大なライセンスを持つオープンソース(BSD またはパブリック ドメインを考えてください)。
- 非常に単純: 理想的には 100 未満の LOC
- キーは
char*
と 値ですvoid*
。それらをコピーする必要はありません。 - を実装する必要はありませんが、必要であるか、値を置き換える必要
remove()
があります。contains()
put()
PS:可能性があるので、宿題タグを付けました。私は非常に怠け者であり、再実装中に遭遇する可能性のある一般的な落とし穴をすべて回避したいと考えています。
ruby-on-rails - Rails で基本的な Ruby テスト済みコードを使用して単一のファイルを再利用しますか?
このコードを単一のファイル snippet.rb で取得し、期待どおりに実行します。このスクリプトは、現在の URL のサムネイルを取得する dzone スニペットからのものです。
今、私はこの機能を Rails と統合したいと思っています。これをlibディレクトリ内のいくつかのrubyファイルに入れるか、モジュールにする必要がありますか??? 私は Ruby にあまり堪能ではないので、どなたかどこから始めればよいか教えていただけないでしょうか??
asp.net-mvc - ASP.NETMVC-アクション動作の再利用
この質問は、主に優れた設計に関係しています。
同じコントローラーの2つの別々のビューで呼び出すことができるDeletePageのようなコントローラーアクションがあるとします。削除ロジックがアクション自体に含まれておらず、正しいビジネスロジックを呼び出す条件付きチェックなどが含まれていると仮定すると、代わりに次のようなプライベートメソッドを使用できる場合、削除アクションの構造を複製することは意味がありません。削除を引き起こす可能性のある両方のアクションで呼び出すActionResultを返します。私の質問は、このような再利用可能なアクションメソッドを配置するのに最適な場所はどこですか?今のところ、私はそれらをプライベートとしてマークし、コントローラークラスの領域に貼り付けていますが、おそらく、そのようなメソッド、または他の場所では、完全に封印された内部クラスの方が理にかなっています。
考え?
php - PHPでコードを再利用する最良の方法は何ですか?
コード:
このコードを頻繁に使用する必要があります。唯一の違いはarray_reverse (..., true)
、最初の例です。
この問題を解決する関数を作成することで、問題を解決しようとしましたorganize_question
。私は失敗しました:
次に、コード内の関連する行を次のように変更しました。
問題は、ある関数から別の関数に変数を転送することです。
関数のパラメーターに必要なすべての変数を入れようとしましたが、この関数には多くの依存関係があるため、すべてが壊れてしまいます。
私はPHPが初めてなので、私が試しているよりも簡単な方法があるはずです。
c# - コード再利用ライブラリを作成および維持するにはどうすればよいですか?
再利用可能なコードのリポジトリをセットアップしようとしています。私は、再利用可能な各コード モジュールに特定の「成熟度」の評価を持たせることを考えていました。評価は、再利用可能なコードが特定の一連の要件内にあるレベルとして定義されます。最高の成熟度レベルは、事前定義された一連の要件全体で最高度の標準になります。
例:
レベル。要件; 説明
レベル 0。コードの使用は合法です。コードは商業産業/複数の契約/その他での使用が合法ですか?
レベル1; 基本コードラインであり、レベル 0 の要件を満たしています。プロトタイプ コード、サードパーティ ツールなど
レベル 2; 関数インターフェイスとコメントがあり、レベル 1 の要件を満たしています。各クラスと関数の十分なドキュメント。コメントから機能を判断できる
レベル 3; コーディング標準に準拠し、レベル 2 の要件を満たしています。定義されたコーディング標準に従い、コード チェック ユーティリティ テスト
レベル 4 に合格。テスト ケースを含み、レベル 3 の要件を満たしています。コードのすべての機能をテストするのに十分なテスト ケースがある
レベル 5; 再利用委員会によって承認され、レベル 4 の要件を満たしています。再利用の専門家や同業者によってレビューされ、すべてのレベルの成熟度を満たしていることが検証されました
この成熟度レベルを階層構造にする必要があるかどうか疑問に思っています。次のレベルに移動するには、前のすべてのレベルの要件を満たす必要があります (上で示したように)。
それとも、次のレベルを満たすための要件のサブセットである必要がありますか?
たとえば、y 個の要件のうち x 個を満たしている場合、次のレベルに進むことができます (要件は上記と同じです)。
レベル 0、6 つの要件のうち 0 つを満たす
レベル 1、6 つの要件のうち 1 つを満たす
…
サブセットアプローチで見られる問題は、一部の要件にはより強い重み付けが必要であり、このアプローチでは考慮されないことです (特定のようなものを取得し始めない限り、b から a と y から x を満たしているなど)。しかし、その後、複雑になり始める可能性があります。
誰かが以前にこれを行ったことがありますか?もしそうなら、どのようにライブラリをセットアップしましたか? 成熟度レベルはまったくありますか、それとも他の構造ですか? 任意の入力をいただければ幸いです。