アルゴリズムとパターンが必要な理由







フロントエンドに設計アルゴリズムとパターンが必要ですか?

実際、おそらくそれらを既に使用していますが、それをさらに改善することができます。







多くの人はアルゴリズムという言葉を恐れています。これは複雑なことのようですが、実際には単なる完全な命令セットです。 たとえば、レシピに従って料理をしたり、ナビゲータでポイントAからポイントBに移動したり、2次方程式を解いたりする場合など、日常生活でアルゴリズムを使用することがわかります。







開発者がアルゴリズムについて話すとき、それらはすべてのアルゴリズムではなく、標準的な問題に対する一般的なソリューションのみを意味します。 多くのアルゴリズムは、コンピューターよりも前に発明されました。たとえば、 ビットワイズソートアルゴリズムは、国勢調査後に取得したデータを処理するために、19世紀に米国で特許を取得しました。







同じ問題を解決するには、異なるアルゴリズムが適している場合があります。 アイテムを検索したいリストがあると想像してください。 これがオンラインストア内の製品のリストであり、ユーザーが文字「E」で始まるフィルターに製品名を入力するとします。 どうやってやるの?







リストがアルファベット順にソートされている場合は、バイナリ検索が適しています。リストの中央を見て、たとえば「K」で始まる名前の製品を見つけます。 リストはソートされているので、アルファベットの「E」が「K」よりも早いため、必要な製品がリストの左側にあることが確実にわかります。 次に、リストの左側を取り出して、同じ手順を繰り返します。







リストが並べ替えられていない場合は、直接列挙する方が適切です。リストの先頭から末尾まで順番に移動して、関心のある要素を見つけようとします。 最悪の場合、すべての要素を調べる必要がありますが、適切な要素を見つけるのにかかる時間を事前に知ることができます。







タスクのアルゴリズムを選択する必要があります。 使用しているデータを理解し、それに基づいて構築します。 リスト、配列、ツリーなどを操作するためのアルゴリズムがあります。 アルゴリズムを選択するには、その利点だけでなく短所も理解する必要があります。それらはよく知られ、説明されています。 たとえば、適切な並べ替えアルゴリズムを選択するのに役立つサイトがあり、さまざまなリストのさまざまなアルゴリズムの作業の比較を視覚的に示しています。







次に、デザインパターンについて説明します。 パターンは、堅牢なプログラミング構造です。 世界中のすべてのプログラマーが、ほぼ同様の問題を解決し、これらの問題を解決するための一般的な解決策がすでに考案されています。 このテーマに関する有名な本があります- 「Gangs of Four」というは、「デザインパターン」と呼ばれています。 Eddie Osmaniからさらに2つの素晴らしい本があります。









パターンは、コードの整理にかかる時間を節約し、問題解決に集中するのに役立ちます。 コードにいくつかの個別の決定を記述する方法を示すパターンがあります。たとえば、「列挙」パターンです。 アプリケーションコードをフォルダーに分割する最適な方法と特定のファイルに書き込む内容を説明するパターンがあります。たとえば、MVCパターンとその関連のMVPとMVVMです。 しかし、さまざまなモジュールが相互に通信する方法を示すパターン、たとえば「制御反転」パターンがあります。







パターンを適用するには、プログラミングを非常に深く理解し、複雑なタスクに取り組む必要があるように思えるかもしれませんが、常にそうであるわけではありません。 。







ユーザーがクリックするサイトにボタンがあると想像してください。 そして、ユーザーがこのボタンをクリックしたときに実行したいアルゴリズムがあります。 それらを接続するために、「イベントハンドラ」が使用されます。これは、言語レベルで直接JavaScriptに埋め込まれた「オブザーバ」パターンの実装です。







var firstModule = function() { console.log('Hi'); }; button.onclick = function(e) { firstModule(); };
      
      





それでは、フロントエンドはアルゴリズムとパターンを学ぶ必要がありますか? はい、あなたは毎日あなたの仕事の中でそれらに遭遇します、そしてあなたが意識的にそれをするならば、あなたはあなたの問題をより効果的に解決することができるでしょう。







ビデオ版





ここで質問することができます








All Articles