阅读 67

[方法论]抽象杂谈

什么是抽象?

最开始接触这个词是来自毕加索的画作,所以,第一反应是觉得这是一个带着神经质意味的词汇。因为看不懂,因为觉得好像谁都能画,所以觉得这个概念有些浮夸。

后来,慢慢去理解了毕加索的画作以后,看到的杂乱无章之中,其实拥有着的是对描述事物的高度抽象,比如一头牛,在毕加索的手下,就会变成只有两个叫和一个庞大身躯的几何形状,这种高度的抽象,只保留了事物最特色的地方,也是一种抽象。

在程序员的生涯里,抽象的概念不是外观上的抽象,某种意义上,像是把牛吃草,牛行走,这种行为进行了抽象,比如,吃草的、四条腿行走的、会叫的,可以是牛。

这也是一种意义上的抽象,比如外观抽象可以将事物抽离出他的特点,而程序的抽象,通常是提取出共性的特征,在抽象这个维度上,越往下层,代码重复度越高,越往上层,代码类越多。而后又可以从不同维度去再度抽象各自的细节。我们把某些模块的增删改查能力进行抽象,作为底层支撑,然而在上层又按照不同的数据域进一步进程抽象划分为不同的领域,都是抽象,只是取舍不同,适用不同。

或者说抽象是透过现象看本质,或者说抽象是描述现象整合为不同的更上层表征,我觉得都可,越发的利用好抽象的特点,而不盲目追求抽象,在不同规模的架构中,采用不同的平衡,这或许是一直需要追求的另一种平衡的极致。不陷入技术的僵化,不被动随着业务推动,适应不同时期的代码和架构,在运用中保持平衡的极致。

文章分类
代码人生
文章标签