计算机世界的工程思维:抽象与分层的运用

前言

我们都知道,在计算机与程序的世界里,工程思维显得尤为重要。那么究竟工程思维有什么特点?其实工程思维最大的特点就是要“把事情做成”,也就是要“交付可靠、可用的成果”。要实现可靠、可用,就离不开我们计算机世界的最根本的思想——抽象与分层


一、抽象是什么?

抽象是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理,而不是重复同样的代码。抽象通常是与模块化息息相关,通过抽象能够实现代码的可读。当然,并非随便哪一行代码都要抽象,这样会让我们的程序显得冗余。美国程序员Derick Bailey的一篇文章,谈到"抽象化"应该遵循三次原则",指的是当某个功能第三次出现时,才进行"抽象化"。

二、分层是什么?

分层就是基于抽象来进行的,我们对底层抽象之后,在这个基础上又可以进行更高一层的抽象,就这样一层一层的往上构建,实现各层功能独立,彼此之间透明。由于层间松散的耦合关系,使得我们可以专注于本层的设计,而不必关心其他层的设计,也不必担心自己的设计会影响其它层,对提高软件质量大有裨益。而且分层设计使得程序结构清晰,升级和维护都变得十分容易,更改层的具体实现代码,只要层接口保持稳定,其他层可以不必修改。即使层的接口发生变化,也只影响上层和下层,修改工作量小而且错误可以控制,不会带来意外的风险。譬如我们的计算机网络体系结构,将这个思想运用的淋漓尽致。


三、实例

这样说其实还有些抽象,接下来我们从一个最最最最最简单的例子入手,一起领略抽象与分层的美。
相信每个人在学习编程初期都会遇到打印图形的问题,接下来我们一起打印一个实心矩形。稍微做过这种打印图形题目的人都会习惯性的想到循环嵌套,如下

void pRec(int l, int w)
{	
	int i,j;
	for(i=0;i<w;i++){
		for(j=0;j<l;j++){
			printf("*");
		}
		printf("\n");
	}
}

这样看起来是不是挺清楚明白的,但是如果我们在做一个复杂的项目时,再多来几层嵌套,极有可能把自己也给嵌套进去。
我们把程序稍微修改一下

/* 一行代码通常不进行抽象
void pchar(char c)
{
	printf("%c",c);
}
*/
void pline(int n,char c)
{
	int i;
	for(i=0;i<n;i++){
		printf("%c",c);
	}

}
void pRec(int l,int w,char c)
{
	int i,j;
	for(i=0;i<w;i++){
		pline(l,c);
		printf("\n");	
	}	
}

这样我们的代码立刻变得简洁易懂,一眼看穿其之所以然。
在复杂的程序中这种优势将会更下明显。


总结

抽象与分层,能够让开发人员精准的把控自己写出的每一行代码,实现设计开发程序,而非调试程序。对于开发人员,能够灵活运用抽象与分层思想,写出的代码往往更加简洁漂亮,可读性、可复用性往往也会更高。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值