关闭

再论ACE_INET_Addr看封装

标签: 编译器c++网络c
1202人阅读 评论(0) 收藏 举报
分类:

 SOCKADDR本身是C的一个结构,C已经对它进行了封装,可惜使用的时候你要操作一大堆细节,这增大了出错率。

我们来看SOCKADDR为我们提供了一个什么样的功能。

1.它为其他部分提供信息。

我们把信息传递给sockaddr,以后传递sockaddr给需要地址信息的部分。

2.它提供查询功能

别人传递过来的sockaddr你可能要做检查合法性等若干需要获取信息的操作。

sockaddr说白了就是一个载体。存放了网络地址信息,再深刻一点就是一个ip地址和一个端口。

为了把直接使用sockaddr的所有细节隐藏起来,对涉及sockaddr的操作一并封装起来是必然要求。

我想ACE_INET_Addr的思想首要是为了隐藏信息。要不要考虑其他类的使用情况呢?我想这个是不必要的。如果你提供了该提供的,那使用者不会有任何无理要求。

这其实就是facade的设计要求使然。

把细节的操作格式化,譬如做成了函数,编译器可以捕获错误的使用。

我想ACE_INET_Addr给我的启示是,把容易出错且没有严格检查包含的行为、数据制定规则,由该规则保证容易出错的地方不会出错或在出错的时候提醒使用者。

在C++中,这个规则的检查者只有一个,他就是编译器。

所以制定这个规则的手段就要围绕编译器的检查来做文章,在这里,使用的是转化为函数利用编译器对函数的参数类型检查来做。

这个问题继续分析下去,我们可以得出:我们能借助编译器的,最多的也只有类型检查了。所以思考手段的方向转到什么情况下编译器要执行类型检查。

最常用的是函数调用。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:181187次
    • 积分:2934
    • 等级:
    • 排名:第12547名
    • 原创:113篇
    • 转载:3篇
    • 译文:0篇
    • 评论:28条
    文章分类