抽象化の力


誰かが私に尋ねたならば、「ソフトウェア開発のすべてで最も重要な概念、ナンバー1は何ですか?」私はそれを1つの単語を使用して答えるだろう:“抽象化”.
抽象化は、その絶対的な本質にアイデアを減らすことについてです.
例を見てみましょう:実行の活動を取る.あなたが実行している間に実際にあなたの体で何が起こっているかをよく見てみるならば、あなたの頭は、あなたの体をバランスさせています.そして、あなたの心臓は狂ったように血を汲み上げています、あなたの肺はあなたの血を酸素化しておくために全速力で働いています、あなたの汗腺はあなたをクールにして、そして、上に保つために、あなたの皮膚に汗を注いでいます.
しかし、あなたにそれは単に実行している.あなたの心は単に抽象化、またはあなたが簡単にそれについて考えることができるので、実行のこの概念から非本質的な詳細を削除しました.
別の例を見てみましょう.以下にコードを示します:
var splitstring = str . split (");
var reverssray = splitstring.返り値
var join array =逆参照.参加する
返り値join array
では、抽象化を加えましょう.
関数の反転文字( str )
var splitstring = str . split (");
var reverssray = splitstring.返り値
var join array =逆参照.参加する
返り値join array

最初の例では、一連のコードを順番に読み、何が起こっているのかを把握して理解しなければなりません.これがコードのより大きい部分の一部であるならば、我々は潜在的にソフトウェアの生涯を通して何度も何度もそれをしなければなりません.
しかし、第2の例では、内部の詳細を無視し、本質的な概念を念頭に置き、文字列を反転させるコードの名前に名前を付けます.アハ!
このアイデアは、コンピュータにとって中心的です(そして、人生、本当に)あなたがそれを一度に考えるとき、あなたが毎日使うハードウェアとソフトウェアがソフトウェアの「層」(または抽象化)で構成されていると理解します.シリコンからマシンコードまで、アセンブリコードに、オペレーティングシステムに、アプリケーションコードには、各層は簡単に詳細を私たちの頭を爆発させることなく推論することができます.
ソフトウェアの明確な抽象化を作成するソフトウェア設計の本質です.それは理解しやすい、簡単に維持するソフトウェアと悪夢の間の違いです.