「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 抽象化: プログラム的に考える方法

抽象化: プログラム的に考える方法

2024 年 11 月 8 日に公開
ブラウズ:534

Abstractions: A Way of Thinking Programmatically

「なぜプログラマーはベッドから出ることを拒否したのですか?彼らはあまりにも多くの抽象層に囚われていたのです!」

プログラミングでは、人生と同じように、複雑なものを管理しやすくするために単純化する必要があることがよくあります。コンピュータを見たことがない人にインターネットについて説明しようとするときを想像してみてください。サーバーやプロトコルの話から始めることはありません。代わりに、たとえ話、ストーリー、または簡略化したバージョンを使用してアイデアを伝えます。これがプログラミングにおける抽象化、つまり複雑なものを単純化することです。

抽象化: シンプルさのレシピ
プログラミングを料理と同じように考えてください。レシピに従うときは、オーブンで起こる化学反応については考えません。手順に従うだけでおいしい料理が作れます。プログラミングにおける抽象化も同様です。これにより、内部の複雑な詳細を気にせずに、達成しようとしていることに集中できます。

抽象化とは何ですか?
抽象化は、プログラミングの複雑さを管理する方法です。これには、複雑なシステムの簡略化されたモデルの作成が含まれ、複雑な詳細ではなく高レベルの操作に集中できるようになります。コードの特定の部分を抽象化することで、より効率的に作業し、コードを再利用し、エラーの可能性を減らすことができます。

サンドイッチ メタファー: 抽象化レイヤーの構築
サンドイッチのメタファーを使用した実際の例を見てみましょう。
1.材料 (低レベルの詳細) 最も基本的なレベルには、パン、レタス、トマト、チーズ、七面鳥などの材料があります。これらは、プログラミングにおける生データまたは低レベルの操作に似ています。これらは不可欠ですが、直接対処するのは面倒です。

例:

let bread = "whole grain";
let lettuce = "romaine";
let tomato = "sliced";
let cheese = "cheddar";
let turkey = "smoked";

2.サンドイッチ (高レベルの抽象化) 各材料を個別に扱う代わりに、サンドイッチを作成します。これは、要素を 1 つのより管理しやすいエンティティにバンドルする抽象化です。

例:

function makeSandwich(bread, lettuce, tomato, cheese, turkey) {
    return `${bread} sandwich with ${lettuce}, ${tomato}, ${cheese}, and ${turkey}`;
}
let myLunch = makeSandwich("whole grain", "romaine", "sliced", "cheddar", "smoked");

詳細を makeSandwich 関数に抽象化することで、ランチを作るたびに個々の材料について心配する必要がなくなり、関数を呼び出すだけで済みます。

3.ランチの注文 (さらに高度な抽象化) さて、デリでランチを注文したい場合はどうすればよいでしょうか?サンドイッチを作るプロセスについて考える必要さえありません。注文するだけです。これはより高いレベルの抽象化であり、さらに簡略化されたインターフェイスを操作します。

例:

function orderLunch(type) {
    if (type === "sandwich") {
        return makeSandwich("whole grain", "romaine", "sliced", "cheddar", "smoked");
    }
    // Other lunch options could go here
}
let myOrder = orderLunch("sandwich");

実用的なユースケース シナリオ: ユーザー インターフェイスの構築
ユーザー インターフェイス (UI) などの複雑なシステムを構築する場合、抽象化は不可欠です。ソーシャル メディア アプリの UI を構築しているとします。各ボタン、テキストボックス、画像のコードを個別に記述する代わりに、それらを表す抽象コンポーネントを作成します。

function createButton(label) {
    return ``;
}
function createUserProfile(name, bio) {
    return `
        

${name}

${bio}

${createButton("Follow")}
`; } let profile = createUserProfile("Koobimdi", "Passionate about coding and storytelling.");

ここで、createButton 関数はボタンの作成を抽象化し、createUserProfile 関数はユーザー プロファイルを抽象化します。毎回生の HTML タグを扱うのではなく、より高レベルの抽象化を扱うだけです。

注意すべき重要なポイント
抽象化により複雑さが簡素化されます: これにより、根底にある複雑さを気にせずに、より詳細なレベルで作業できるようになります。
抽象化のレイヤー: 作成する抽象化のレイヤーが増えるほど、各レベルで重要なことに集中できるようになります。
再利用性: 抽象化により、複数のコンテキストで使用できる汎用関数またはコンポーネントを作成できるようになり、再利用性が促進されます。
効率: 反復的なタスクを抽象化することで、より効率的で保守しやすいコードを作成できます。

結論
抽象化は料理のプロセスを簡素化するレシピのようなもので、細部にこだわることなく複雑な料理を作成できるようになります。プログラミングにおいて、これは複雑さを管理し、より効率的に作業し、よりクリーンなコードを作成するのに役立つ強力なツールです。

「覚えておいてください、物事が複雑になりすぎたときは、そこから抜け出す方法を抽象化するときです。キッチンが散らかりすぎたときにテイクアウトを注文するときと同じです。」

リリースステートメント この記事は次の場所に転載されています: https://dev.to/koobimdi/abstractions-a-way-of- Thinking-programmatically-3cdc?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3