抽象的力量


如果有人问我“在所有软件开发中最重要的概念是什么?” 我会用一个词来回答它:“抽象”。

抽象就是将一个想法简化为绝对本质。

让我们看一个例子:运行这个活动,如果你仔细看看你跑步时身体实际发生了什么,你的头就会旋转:无数的肌肉保持你的身体平衡,你的心脏像疯了一样抽血,你的肺部全速运转以保持你的血液充氧,你的汗腺在你的皮肤上排汗,让你保持凉爽。

但对你而言,它只是在运动。你的思维只是从这个运动概念中抽象或删除了非必要的细节,这样你就可以轻松地思考它。

让我们看另一个例子。这是很琐碎的代码:


var splitString splitString = str.split(“”);
var reverseArray = splitString.reverse();
var joinArray = reverseArray.join(“”);
return joinArray;

现在让我们添加抽象:

function reverseString(str){
var splitString = str.split(“”);
var reverseArray = splitString.reverse();
var joinArray = reverseArray.join(“”);
return joinArray;
}

在第一个例子中,我们必须按顺序读取每行代码并跟踪发生的事情以便理解它。如果这是很长代码,我们可能不得不在软件的整个生命周期中反复这样做。

然而,在第二个例子中,我们给那段代码命名,让我们忽略内部细节并记住基本概念:reverseString。啊哈!

这个想法对计算机(以及生活,真的)至关重要,你会发现你每天使用的硬件和软件都是由软件的“层”(或抽象)组成的。从芯片到机器代码,到汇编代码,再到操作系统,再到应用程序代码,每个层都可以轻松推理,而不会让细节爆炸。

在软件中创建清晰的抽象是软件设计的本质。这是可理解的,易于维护的软件和处理噩梦之间的区别。