問題タブ [abstraction]

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 投票する
9 に答える
1573 参照

abstraction - データが 1 つのアプリによって消費される場合、データの単純なリストをハードコーディングする代わりに、データベース テーブルを使用する利点

しばらくの間、米国の州 (および準州) のリストをデータベース テーブルに格納し、その情報を使用するアプリケーション用にキャッシュする必要があると多くの人から言われてきました。彼らが私にこれを与えた唯一の理由は、正規化を促進するためであり、「それが私たちが常に行ってきた方法である」ためです.

アプリケーションの範囲が国際的に拡大するためにリストが頻繁に変更される場合 (たとえば、カナダの州を含めるなど)、国識別子も示すデータテーブルにリストを抽象化することは理解できます。ただし、リストがほとんどロックされており、アプリケーションの 1 つの画面でしか使用されていない場合、クエリとキャッシュを実行する価値はありますか? SMALLINT 外部キーを保存することの違いは、CHAR(2) よりもはるかに優れていますか? それは常に実用的ですか?

私が一緒に働いた会社で見たこの傾向について考えていました。

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

.net - HTML の .NET リフレクション/抽象化?

HTML (およびおそらく CSS スタイルも) の完全な抽象化を提供する .NET クラス ライブラリを持つ可能性に興味があります。

あらゆる種類の HTML 要素に .NET クラスがあり、抽象クラス (たとえば、'OrderedList' と 'UnorderedList' が拡張する抽象基本クラス 'List') もあります。

次に、要素をツリー構造に追加し、各要素インスタンスで「Render」などを再帰的に呼び出すことで、スタイルを含む完全な HTML ページにレンダリングできます。

そのようなライブラリが役立つ可能性がある多くの方法を想像できます。

  • クロスブラウザー レンダリングの問題、または複数のデバイス/画面サイズのサポートのフレームワーク認識に組み込みます。そうすれば、Web ページを一度作成すれば、すぐにすべての主要なブラウザーで動作するようになる可能性があります。

  • リフレクションを使用して、非常に優れた IntelliSense などを備えた HTML エディターを構築します。エディターには、不正なマークアップを生成することなく、要素を動的に再配置できる WYSIWIG モードを含めることもできます。

  • Web サイトの SEO、コンプライアンス、アクセシビリティなどについて非常に強力な監査を行います。

  • 要素レベルに至るまで、非常にきめ細かくインテリジェントなキャッシングを実行します。

これに似たものはすでに考えられているか、試みられていますか?

(注: ASP.NET の "HtmlControls" 名前空間の下に、これに似たものがあることは認識していますが、HTML 要素の全範囲を表しているわけではなく、含まれている要素が十分に正確にモデル化されていません。また、 ASP.NET Web フォームの HTML 要素は、厳密に型指定されたクラスとしてコンパイルされるのではなく、テキスト ファイルのように扱われ、実行時に解析されます。)

(別の注記: Google Web Toolkitはこの考え方に似ていると思いますが、これは Java で書かれており、標準ベースの XHTML、CSS、Javascript ではなく、Ajax/Javascript/DOM を対象としています)

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

ruby - 初期化属性を抽象化する最良の方法

このパターンを抽象化する最良の方法は次のとおりです。

優れたソリューションは、スーパークラスを考慮入れ、より多くのことを行うためのイニシャライザを引き続き使用できるようにする必要があります。ソリューションのパフォーマンスを犠牲にしないための余分なポイント。

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

ruby-on-rails - 特定のORM実装を次の場所でどのように非表示にしますか:class Project <ActiveRecord :: Base

Projectというモデルクラスがあるとしましょう。ただし、これの代わりに:

私はこれを書きたかった:

特定のORM実装が私のモデルクラスに存在しないようにします。

ActiveRecord::Base上記のProjectクラスが、特にサブクラス化せずにサブクラスとして機能できるようにするには、ORMクラスをどのように作成する必要がありますか?

私は簡単に言うでしょうか:

そして、ProjectはActiveRecord::Base、私が書いたのとまったく同じサブクラスになります。

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

model-view-controller - 管理レイヤーで MVC ルートから URL を生成しています...

だから...私は電子メールを生成しようとしているビジネスオブジェクト/マネージャーを持っています。

これらの電子メールには、Web サイト上のさまざまなコンテンツへのリンクが含まれています...したがって、MVC ルーティングについて理解する必要があります..または、少なくとも Web サイトの URL を生成する方法...

ただし、私のビジネス オブジェクトは RequestContext などにアクセスできず、電子メールの生成は必ずしも Web サイトへの Web 要求の結果ではありません (電子メールを生成するバックグラウンド スレッドで実行されるディスパッチャがあります)。

リクエストにアクセスせずにURLを生成する方法 - したがって、URLHelperを使用できないというアイデア...

考え?

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

language-agnostic - 例外と抽象化

カスタム例外をいつスローする必要がありますか?

たとえば、サーバーに接続するコードがあります。サーバーに接続するコードは、接続に失敗するとIOExceptionをスローします。それが呼び出されるメソッドのコンテキストでは、これは問題ありません。ネットワークコードでも問題ありません。

ただし、これは接続がない(したがって機能しない)ことを表すため、例外はUIまで続きます。この段階では、IOExceptionは非常にあいまいです。NoConnectionExceptionのようなものの方が良いでしょう。

だから、私の質問は次のとおりです。抽象化により適した別の(カスタム)例外を代わりにスローするために、どの段階で例外をキャッチする必要がありますか?

0 投票する
9 に答える
490 参照

javascript - jQuery コードの冗長性を減らすにはどうすればよいですか?

何百ものリンクがあり、基本的に同じタスクを実行するにもかかわらず、それぞれに独自の jQuery 関数があるため、JavaScript ファイルのサイズが手に負えなくなりつつあります。

ここに短い抜粋があります:

このロジックの一部を抽象化して、同じことを行う何百もの関数ではなく、1 つの関数だけにする方法はありますか?

0 投票する
8 に答える
888 参照

programming-languages - 将来のプログラミング言語はどのようにして抽象化をより容易にすることができますか?

わかりやすいソフトウェアを設計する(そして実際、何でも設計する)ための重要な特性の1つは、優れた抽象化のセットを開発することです。最近では、これらの抽象化には、関数、クラス、インターフェイス、再帰、高階関数などが含まれます。しかし、他に何がありますか?デザインをさらに抽象化して、当面の直接的な目標以外のことを考える必要がないようにするにはどうすればよいでしょうか。既存のテクノロジーでまだ活用されていない新しい抽象化は何ですか?

また、私のリストにあるほとんどの項目(おそらく再帰を除く)は、コードの再利用に使用されるツールでもあることに注意してください。コードの再利用はこの質問の主題ではなく、優れた抽象化の必要な側面として私が見ているものでもありません関数は、いくつかの異なる場所から呼び出すことができるためではなく、説明的な名前の背後に関数が実行していることを隠すため、抽象化として役立ちます。

形の悪い考え:それ自体の状態を維持せずに、他の関数のシーケンスのみを呼び出すドライバー関数は、実際には関数と同じですか?それを関数として書き、それを関数と呼びますが、おそらくそれは別の概念を表していますか?これは、値を返すプロシージャと値を返さないプロシージャを区別することにより、一部の言語に反映されています。しかし、おそらく、その違いを確認するためのより良い方法、比較的無関係なステップのシーケンスを抽象化するためのいくつかの異なる方法がありますか?

繰り返しになりますが、将来のプログラミング言語はどのようにして抽象化をより容易にすることができますか?

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

java - 抽象オブジェクトの実装を定義する

私は次のことを行う方法を探しています:

プロジェクト:いくつかのイベントが発生したときに呼び出される抽象クラスを定義します(必要な場合はイベントハンドラー)上記のイベントハンドラーを使用してイベントを発生させるエンジンを定義します

Bプロジェクト:抽象クラスの実装を定義しますエンジンを実行します。

実装クラスを登録して、エンジンの実行時に呼び出されるクラスであることを確認するにはどうすればよいですか。

編集1:レジスターとは、与えられた抽象オブジェクトに対して呼び出される実装を何らかの方法で定義する必要があることを意味します

質問が明確でない場合は申し訳ありませんが、詳細が必要な場合はお知らせください

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

java - Java 拡張/抽象化/実装に関する質問

私は 3 つのクラス (クラス A、クラス B、およびクラス C) を持っています。

クラス A は B のインスタンスを呼び出し、start() を実行します。

クラス B はスレッドを拡張するため、start() が呼び出されると、run() メソッド内のすべてが実行されます。

run() スレッドには、クラス C のインスタンスがあります。

クラス A の新しいインスタンスをインスタンス化せずに、クラス C のメソッドがクラス A のメソッドを呼び出せるようにする方法はありますか?

クラス A をクラス B に拡張できないため (「スレッド」が既に拡張されているため)、これを行う方法がわかりません。

あいまいで申し訳ありませんが、私のプロジェクトにはあまりにも多くのコードが含まれており、コードの例を直接提供するには複雑すぎます。

ありがとう!