博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码抽象层次2
阅读量:6848 次
发布时间:2019-06-26

本文共 947 字,大约阅读时间需要 3 分钟。

看了kent的实现模式,对代码抽象层次有了一点理解,kent首先问了一个问题,下面的代码有神马问题?

void compute(){     int flag = input();     flag |= 1;     output(flag);}

粗看来没有,但其实不然,但其实,input和output已经是高层抽象了,例如你并不知道输入来自于何方,到底是键盘输入呢,还是文件输入,又或者是网络输入,同样output也是如此,但是中间设置flag的语句则是一个低层抽象,如果整个函数都是低层抽象,代码应该是这样:

void compute(){    extern char *s;    int flag = 0;    scanf("%d",&flag);    flag |= 1;         switch(flag)    {        case 1:            fprintf(logHandler,"%s\n",s)        case 2:            send(serverSocket,s,length(s),0);    }}

反之,如果函数是一个高层抽象的函数,代码应该是这样:

void compute(){     int flag = input();     setFlag(&flag);     output(flag);}

更进一步的,如果flag的位1在业务逻辑的意义是保存到日志里,那么代码应该是这样的:

void compute(){     int flag = input();     ensureSaveToLog(&flag); //保证一定会保存到日志     output(flag);}

将高层逻辑和低层逻辑剥离的最大好处时,高层逻辑不用管低层逻辑是怎么实现的,即所谓的解耦,低层逻辑从键盘读也好,从文件读也好,那是低层逻辑的事情,而且低层逻辑改变实现,这事对于高层逻辑也是透明的

疑问:

1)层次不应该太多,层次太多则小函数太多,未必好

2)不同层次的函数放在什么地方,这是个架构问题?

 

转载于:https://www.cnblogs.com/code-style/p/3332946.html

你可能感兴趣的文章
Maven的简介
查看>>
Ubuntu14.04虚拟机下基本操作(typical安装)
查看>>
第一篇原创(工作一年后的纠结辞职战斗)
查看>>
javascript 重难点(原型链 this) 理解总有一个过程,不要急,循序渐进!
查看>>
background-image 和 img
查看>>
Spring 启动加载资源到内存
查看>>
Python菜鸟之路:Python基础-逼格提升利器:装饰器Decorator
查看>>
NSRunLoop
查看>>
mysql存储引擎(mysql学习六)
查看>>
千万短信发送量的架构设计
查看>>
关于python学习的各方面感想
查看>>
Android通讯录数据库操作
查看>>
使用Java+Kotlin双语言的LeetCode刷题之路(二)
查看>>
Access-Control-Allow-Origin 如何设置多个值呢
查看>>
【洛谷 P2742】【模板】二维凸包
查看>>
【洛谷 P2865】 [USACO06NOV]路障Roadblocks(最短路)
查看>>
css样式大全
查看>>
oracle基本命令笔记
查看>>
es数据库基本操作
查看>>
团队会议计划
查看>>