当前位置: 网站首页>小程序开发>网络推广

宿迁小程序制作【宿迁企业邮箱】宿迁网站外包、宿迁微信商城开发、宿迁网店美工、宿迁淘宝设计

发表日期: 2021-04-25 12:45:30 浏览次数:118

宿迁小程序制作【宿迁企业邮箱】宿迁网站外包、宿迁微信商城开发、宿迁网店美工、宿迁淘宝设计

宿迁,简称宿,别称水城,古称下相、宿豫、钟吾等,江苏省地级市,宿迁位于长三角北翼,江苏省北部,是长三角北翼区域性综合交通枢纽, [1]  地处徐州、连云港、淮安中心地带。宿迁是江苏省沿海地区向中西部辐射的重要门户城市 [2]  ,是徐州都市圈、江淮生态经济区核心城市 [3]  、一带一路节点城市 [4]  。截至2020年6月,宿迁下辖2区3县 [5]  ,总面积8555平方千米。截至2019年末,宿迁户籍人口592.36万 [6]  。

宿迁是西楚霸王项羽的故乡,有着5000多年的文明史和2700多年的建城史,曾是泗水国、钟吾国、宿国都城,历史悠久,人文荟萃,素有“华夏文明之脉、江苏文明之根、淮河文明之源、楚汉文化之魂”之称 [7]  。宿迁是酒文化的发源地之一,有中国白酒之都称号 [8]  ,洋河、双沟两大名酒出产于此。宿迁是典型的苏北水乡,坐拥骆马湖、洪泽湖两大淡水湖,大运河、古黄河、淮沭新河等众多河流镶嵌其间。乾隆皇帝六下江南五次驻跸于此,赞叹宿迁为“第一江山春好处” [9]  。

宿迁是首批12个社会信用体系建设示范城市 [10]  ,是中国优秀旅游城市 [11]  、国家园林城市 [12]  、国家卫生城市 [13]  、全国文明城市 [8]  。2020年10月,宿迁被评为全国双拥模范城(县) [14]  。

但是即便在上述情况下,也不应该暴露成员变量。首先,方法调用的开销相对于全部API调用来说,很可能是微不足道的。即使你正在编写注重性能的API,谨慎地使用内联,结合现代编译器优化实现,通常会完全消除方法调用的开销,使你获得与暴露成员变量等同的性能。如果你仍然有所顾虑,试着测试一下内联的getter/setter方法和使用公有成员变量的时间开销。本。访问http://APIBook.com/下载代码,然后亲自试验一下。

隐藏实现方法

除了隐藏所有成员变量外,同样也应该隐藏不需要公开的方法。信息隐藏的原则是:将类的固定接口与其内部设计实现相分离。对几个大型程序的早期调研发现,那些使用信息隐藏技巧的程序的修改难度是没有使用该技巧程序的1/4(Korson and Vaishnavi, 1986)。虽然具体的修改难度各不相同,但可以明显地看出,隐藏API的内部细节会使软件更易于维护和升级。

记住关键的一点:类只应该定义做什么而不是如何做。考虑下面这个从远程HTTP服务器下载文件的类。

#include<string>#include<cstddef>#include<sys/socket.h>#include<unistd.h>class URLDownloader{public:
   UPLDownloader();
   bool DownloadToFile(const std::string &url,
                       const std::string &localFile);
   bool SocketConnect(const std::string &host,int port);
   void SocketDisconnect();
   bool IsSocketConnected() const;
   int GetSocket() const;
   bool SocketWrite(const char *buffer,size_t bytes);
   size_t SocketRead(char *buffer,size_t bytes);
   bool WriteBufferToFile(char *buffer,
                          const std::string &filename);private:
   int mSocketID;
   struct sockaddr_in mServAddr;
   bool mIsConnected;};复制代码

将所有的成员变量都声明为私有并没有错,这是一个好的开始。但一些涉及具体实现的方法却被暴露了,比如打开套接字并从中读取数据的方法,以及将内存中缓存的结果写回磁盘的方法。客户其实并不需要了解这些具体信息。他们想要的仅仅是指定一个URL,然后在磁盘上创建一个文件,此文件包含URL指定的远程位置上的内容。

此处的GetSocket()方法相当糟糕。该公有方法返回对私有成员变量的访问结果。只要调用该方法,客户就可以获得隐含的套接字句柄,并且可以在不了解URLDownloader类的情况下直接操作此套接字。更让人不安的是,GetSocket()方法竟然被声明为const,表示该方法不能修改类的状态。虽

然严格上说的确是这样,但是客户仍然可以通过该方法返回的整型套接字句柄修改类的状态。如果返回指向某个私有成员变量的non-const指针或引用,那也会发生同样的内部状态泄露(Meyers, 2005)。这么做使得客户能够得到内部数据成员的句柄,进而就能绕过API直接使用此句柄改变对象的状态。

提示 永远不要返回私有数据成员的非const指针或引用。这会破坏封装性。

对于URLDownloader类而言,另一种设计方法是将除了构造函数以及DownloadToFile()方法之外的所有方法都声明为私有,除此之外都是实现细节。这样做之后,就可以自由地改变类的实现,而不影响任何使用该类的客户。

但这种情况仍然有瑕疵。它只是从编译器的角度隐藏了实现细节,但是客户仍然可以查看头文件,获得类的所有内部细节。事实上,这几乎不能避免,因为必须向客户分发头文件,以便他们能够编译并使用你的API的代码。另外,即便这些类的私有成员独立于公有接口,也必须使用#include包含这

些成员所需要的所有头文件。例如,URLDownloader的头部需要使用#include包含所有特定平台的下的套接头文件。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg



宿迁小程序制作宿迁企业邮箱宿迁网站外包、宿迁微信商城开发、宿迁网店美工、宿迁淘宝设计

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878