問題タブ [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.
php - if-then-elseが多すぎてコードが読めなくなる場合に、Do n't-Repeat-Yourself(DRY)の原則を順守する方法は?
Do n't-Repeat-Yourselfの原則を守りたいのですが、PHPをHTMLとCSSと一緒に作成するときに、同じコードをさまざまな状況で再利用すると、すぐにコードに非常に多くのコードが含まれるようになります。それ以外の場合、コードは簡単に保守できません。
ほとんどのコードエディタは{if}{else}{/ if}と一致しないため、テンプレートエンジンであるSmartyを使用する場合、これはより大きな問題になる可能性があります。したがって、プログラマーは一致するタグを視覚的に探す必要があり、簡単ではありません。ネストされた{if}{else}{/if}のレベルが3つまたは4つある場合。
そのような状況では、DRYに固執する方法はありますが、それでも優れた保守可能なコードがありますか?
apache-flex - 複数のコンポーネントを共有する複数の Cairngorm MVC プロジェクトを構築するにはどうすればよいですか?
最近、Flex でカスタム レポート UI のプロジェクトを完了しました。今、私は基本的に元の UI の「ライト」バージョンである新しいアプリケーションを作成する任務を負っています。元のアプリケーションにあるオプションの一部のみが含まれます。また、別のアプリケーションである必要があります。
コードを複製したくないので、多数のクラスを元のアプリケーションから、両方のアプリケーションで共有できる新しいライブラリに移動することを計画しています。ただし、MVC 環境でこれを機能させる方法を見つけようとしています。
たとえば、ユーザーが複数のアイテムをフィルター処理できるアコーディオン コンポーネントがあります。各 Accordion の子は、2 つのリストを持つカスタム コンポーネントのインスタンスです (1 つは選択可能なエンティティ用、もう 1 つはユーザーが選択したエンティティ用)。各子コンポーネントには、モデルにバインドされたプロパティと、Cairngorm イベントを呼び出す関数があります。
簡単な例を次に示します。
ArtistFilter.mxmlとLabelFilter.mxmlは、 GenreFilter.mxmlとほぼ同じ設計ですが、特定のイベントに使用されます。
では、これをどのように行うべきですか?モデルを共有ライブラリに移動しても意味がありません。基本的に、ライブラリに View コンポーネントを作成するだけです。私はここでロッカーから完全に離れていますか、それとも何ですか?
.net - .NET 3.5 で広く使用されているパターンとインターフェイスのライブラリはありますか?
プロジェクトで独自のバージョンの IFactory、ILog、IRepository、およびその他の一般的なインターフェイスと実装をコーディングすることは避けたいのですが、これらを含む一般的に使用されるライブラリは、特定の具体的なサブシステム (1 つの ORM、1 つの IoC コンテナー、 1 つのロガー)。より抽象的に見えるものに出くわしましたが (NCommon には 3 つのリポジトリ実装があります)、追加または推奨できるものがあるかどうか疑問に思っていましたか?
ありがとう!
ジェームズ
PS - 私の最初の質問は少し一般的すぎましたが、あなたの回答と推奨事項に非常に感謝しており、それらをすべてチェックします.
refactoring - コードの再利用とリファクタリング
コードの再利用とコピー/貼り付けのベストプラクティスは何ですか?
再利用の問題は、再利用されたコードを変更すると、他の多くの機能に影響を与える可能性があることです。
これは良いことと悪いことです。変更がバグ修正または有用な拡張である場合は良いです。古いバージョンに依存していた(または新しいバージョンにバグがある)ために、他の再利用コードが予期せず壊れた場合は問題があります。
場合によっては、コピー/貼り付けの方が優れているように思われます。貼り付けたコードの各ユーザーは、結果なしにカスタマイズできるプライベートコピーを持っています。
この問題のベストプラクティスはありますか。再利用には防水ユニットテストが必要ですか?
c# - 同じエンティティの複数の表現
コードの複製を回避することを考えていると、新しいシステムの開発を開始するたびに私を捕らえる質問がありました。
私が顧客を持っているシステムがあり、それをリポジトリにCRUDして、Webサービスのリソースとして表示する必要があるとします。
顧客に関連するクラスについて考えると、次のようになります(わかりました、これらの名前を実際に使用することはありません)。
- CustomerEntity、システムのロジックを実行するために使用されるエンティティを表します。
- CustomerRepositoryEntity、それが格納されるテーブル行を表します。
- CustomerXMLEntity、XMLノード'customer'を表します。
私には3つのエンティティがあり、すべての顧客の属性は各クラスにあるようです。単に「顧客」と呼ばれる、同じエンティティ内にこれら3つのクラスを統合する方法やパターンがないのではないかと思いました。
このように、「Customer」の新しい表現を作成する必要があるたびに(たとえば、Json要素として表現したい場合)、そのための新しいクラスを作成する必要はありません。私はそれが非常に特別な問題であることを知っています、しかし私はそれが私が今している方法より簡単である(そして見栄えが良い)ことができないかどうかと思っていました。
c# - System.Attributeクラスの使用
System.Attributeクラスを使用することは(一見)良い考えであるように思われる状況に陥りました。
アプリケーションで印刷するオブジェクトがあり、各プロパティの前にラベル(またはその前の文字列)が必要です。各プロパティを次のようにハードコーディングできます。
各プロパティについても同様です。しかし、その代わりに、この「ラベル」をハードコーディングする必要がないコードを作成しようとしていたので、すべてのプロパティを動的に出力できました。
System.Attributeクラスを使用して、そのようなものを取得しました。
したがって、ここに私の問題があります。この属性の値を取得することは不可能ではありませんが、リフレクションを使用する必要があったため、フレンドリーではありません。
リフレクションを使用することはそれほど怖くありませんが、作成されていないものに属性を使用しているように見えました。
属性を使用するのに最適な場所はどこか、そしてこれが本当にそれを使用するための状況であるかどうか疑問に思います。
oop - 再利用可能なコードのアーキテクチャ
私は、共通の構造を共有し、同じことのいくつかを同じ方法で実行する必要があるいくつかの小さくて単純なアプリケーションを作成しています (例: ロギング、データベース接続のセットアップ、環境のセットアップ)。再利用可能なコンポーネント。コードは、強く静的に型付けされた言語 (Java や C# など、両方でこの問題を解決する必要がありました) で記述されています。現時点で私はこれを持っています:
より良い方法はありますか?もしかして以下のような?トレードオフを比較検討するのに苦労しています...
明らかなトレードオフの 1 つは、オプション 2 では、「フレームワーク」がアプリを try-catch ブロックでラップできないことです...
language-agnostic - それは存在しますか:繰り返しコードファインダー?
近い将来、私はやや大きなプロジェクトを継承する予定です。最近、いくつかの小さな更新を行っていますが、同じ操作をわずかな違いで実行するメソッドがあるため、その一部でリファクタリングが使用される可能性があることに気付きました。
大量のソースコードを取得し、同様のコードブロックを見つけて、リファクタリングの可能性を特定できるツールがあるかどうか疑問に思いました。あいまい検索が存在する場合は、同様の操作を識別できるようにすると便利です(コードのチャックが逐語的に繰り返される以外)。
プログラムがコード自体をリファクタリングすることは期待していません。潜在的な繰り返しを特定するだけです。
私のプラットフォームはC#ですが、どのような解決策でも役に立ちます
c# - Reporting ServicesでMVCアプリケーション(DLL)のビジネスロジックを再利用する
適格性などの概念に関するシステムのすべての計算を処理するDLLにコンパイルされるビジネスオブジェクトがあります。オブジェクトは、その周りのラッパーを介してDBへの接続も処理します。
この.NETDLLを取得して、レポートサービスレポート(SSRS)のデータソースとして使用する方法はありますか?複数の場所にロジックを配置したくありません。
編集
Webアプリ自体のWebサービスの機能を公開し、レポートをWebサービスに接続するのはどうですか?誰かが前にこれをしましたか?それが役立つ場合は、Webアプリにasp.netMVCを使用しています。