命令型プログラミングと宣言型プログラミング–平易な英語で説明される違い

コーディングインストラクターとして、プログラマーを新しい方法で考えて世界に送り出すことが私の義務です。命令型プログラミングから宣言型プログラミングに切り替えると、考え方が大きく変わります。

生徒が基本的なJavaScriptを学んだら、関数型プログラミングと宣言型コーディングスタイルで使用される配列メソッドについて説明します。これは彼らの脳が火の上でマシュマロのように飛び出し、焼けるように暑くなり、溶け始めるところです。

命令型プログラミングとは何ですか?

初心者として、あなたはおそらくほとんどが命令型でコーディングしているでしょう:あなたはコンピュータに従うべき一連の指示を与え、そしてコンピュータはあなたが望むことをわかりやすい順序で行います。

世界で最も一般的に使用されているパスワードのリストがあると想像してください。

const passwords = [ "123456", "password", "admin", "freecodecamp", "mypassword123", ];

私たちのアプリは、サインアップ時にユーザーのパスワードをチェックし、このリストからのパスワードを作成することを許可しません。

ただし、その前に、このリストを改良したいと思います。ユーザーが9文字未満のパスワードでサインアップできないようにするコードはすでにあります。したがって、このリストを9文字以上のパスワードだけに減らして、チェックを高速化することができます。

必須として、次のように記述します。

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. と呼ばれる空のリストを作成しますlongPasswords
  2. 次に、元のpasswordsリストにあるパスワードの数だけ実行されるループを記述します。
  3. 次に、現在実行しているループ反復のインデックスでパスワードを取得します。
  4. 次に、そのパスワードが9文字以上であるかどうかを確認します。
  5. もしそうなら、私たちはそれをlongPasswordsリストに入れます。

命令型プログラミングの強みの1つは、推論が容易であるという事実です。コンピューターのように、私たちは一歩一歩進むことができます。

宣言型プログラミングとは何ですか?

しかし、コーディングについては別の考え方があります。それは、物事が何であるかを絶えず定義するプロセスとしてです。これは宣言型プログラミングと呼ばれます。

命令型プログラミングと宣言型プログラミングは同じ目標を達成します。それらは、コードについての異なる考え方です。それらには長所と短所があり、両方を使用する場合があります。

命令型プログラミングは初心者にとっては簡単に推論できますが、宣言型プログラミングを使用すると、見たいものを正確に反映した、より読みやすいコードを記述できます。優れた変数名と組み合わせると、強力なツールになります。

したがって、コンピューターに段階的な指示を与える代わりに、必要なものを宣言し、これを何らかのプロセスの結果に割り当てます。

// using the passwords constant from above const longPasswords = passwords.filter(password => password.length >= 9); console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

のリストは、9文字以上のパスワードのみlongPasswordspasswordsフィルタリングされたリストとして定義(または宣言)されます。

JavaScriptの関数型プログラミングメソッドを使用すると、物事をきれいに宣言できます。

  • これはパスワードのリストです。
  • これは長いパスワードのみのリストです。(実行後filter。)
  • これは、IDを持つパスワードのリストです。(実行後map。)
  • これは単一のパスワードです。(実行後find。)

宣言型プログラミングの強みの1つは、最初に何が欲しいかを尋ねなければならないことです。私たちのコードが表現的で明示的になるのは、これらの新しいものの命名にあります。

そして、仲間の開発者がやって来てコードを見ると、バグをより簡単に見つけることができます。

「この変数を「インデックス」と呼ぶと、数値が期待できますが、その結果がfilter配列を返すことがわかります。どうしたの?"

私は、学習者が宣言型コードをできるだけ頻繁に記述し、物事が何であるかを常に定義(および再定義するためにリファクタリング)することをお勧めします。

必須のプロセス全体を頭の中に保持するのではなく、明確な定義を使用して、より具体的なものを頭の中に保持することができます。

Mike Zetlowは、10x CodeCampの主任インストラクターです。