SLAP
英文:Single Level of Abstraction Principle
中文:单一抽象层次原则
是什么
在编写代码时,我们要将高级别的抽象化概念和低级别抽象化概念分离。
在分离时不能只有高低两层,我们要根据功能的复杂程度对抽象化概念进行分离,然后统一各层的抽象级别。
我们要根据抽象级别对函数进行分割,并且将同一函数中的代码统一为同一个抽象级别。
统一各抽象级别之后,代码就可以像图书一行供人阅读了。
function 高级(){ //1级目录
中级1();
中级2();
}
function 中级1(){ //2级目录-1
低级1();
低级2();
}
function 低级1(){ //正文内容
//处理
}
function 低级2(){ //正文内容
//处理
}
function 中级2(){ //2级目录-2
低级3();
}
function 低级3(){ //正文内容
//处理
}
为什么
将代码分割成级别统一的函数,能使代码具有概括性和可读性。也就是说,函数一览起到了目录的作用,从而使代码拥有概括性。分割后的函数是小块的代码,这就是提升了代码的可读性。
代码统一之后,抽象度相同的处理都在同一个地方。于是,代码变得更加顺畅,更容易让人理解。
相反,如果读到一半代码的抽象度突然发生了改变,流畅感会戛然而止。
怎么做
我们要将函数结构化。
将处理转换为意图清晰、由抽象化级别一致的多个步骤组成的函数。
将函数结构化之后,各函数的处理将以调用比自己低一个级别的函数为中心,这种由其他函数调用组成的函数称为复合函数。
复合函数要尽量小,另外不要在复合函数中调用不同抽象级别的函数,也就是说,一个函数中不能既有“连接数据库”这种低级处理,又有“执行业务逻辑”这种高级处理。