
发表日期: 2021-04-25 12:49:24 浏览次数:109
宿迁网络公司哪家好【宿迁企业网站百度SEO推广公司】宿迁做网站开发价格、宿迁淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、宿迁高端企业网站页面制作设计专业公司需要多少钱
宿迁,简称宿,别称水城,古称下相、宿豫、钟吾等,江苏省地级市,宿迁位于长三角北翼,江苏省北部,是长三角北翼区域性综合交通枢纽, [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] 。
提示 谨记奥卡姆(Occam)剃刀原理:若无必要,勿增实体。
API中每个公有元素都是一项承诺,它承诺了该功能在API的生命周期中都将得到支持。虽然你可以背弃某项承诺,但是此举会令客户受挫并迫使其重写代码。更糟糕的是,由于你无法保证API的稳定迫使用户不停地修正代码,或者由于你移除了支持其独特用例的功能导致他们无法使用API,用户很可能会弃用你的API。
关键的一点是,在发布了某个API并且已经有客户开始使用之后,增加功新能很容易,而移除功能就非常困难。一个很好的建议是:当不确定是否需要某个接口时,就不要提供此接口(Bloch, 2008; Tulach, 2008)。
该建议违背了API设计人员的良好意愿。因为工程师容易被解决方案的通用性和灵活性诱惑,所以可能情不自禁地为API增加抽象层次或通用性,盼望着它们将来可能被用到。工程师应该抵制这种诱惑,原因如下所述。
(1) 你想要添加的通用性可能永远不会用到。
(2) 如果某天用到了想要添加的通用性,那时你可能已经掌握了更多API设计知识,并可能有了与最初设想方案不同的解决方案。
(3) 如果你确实需要添加新功能,那么简单的API比复杂的API更容易添加新功能。
因此,应该保证API尽量简单:类及类中的公有成员暴露得越少越好。这样做的好处是API会更易于理解,更易于用户记住API模型,而且更易于调试。
提示 疑惑之时,果断弃之!精简API中公有的类和函数。
继承(将某个成员函数设置为虚函数)暴露出的功能可能会超出预期,而且这种方式并不易察觉。客户可以通过继承API中的类重新实现任意虚方法。虽然继承十分强大,但仍要意识到其潜在的隐患。
对基类看似无害的修改可能会给客户带来不利的影响。如果不了解客户基于虚API构建代码的方式就孤立地升级基类,则会导致这种情况。这就是常说的“脆弱基类问题”(fragile base class problem, Blanchette, 2008)。
客户可能会以你根本无法预料的方式使用API。这将导致API执行你无法控制的代码进而可能导致非预期行为。一个极端的例子是,你无法阻止客户在某个重写的方法中调用delete this,而且这么做甚至可能是一个合理需求,而如果你设计的API实现不允许此操作,那么代码很可能会崩溃。
客户可能采用不正确的或易于出错的方式扩展API。例如,你有一个线程安全的API,但是依照你的设计,客户可以重写某个虚函数,如果客户的实现没有执行恰当的互斥加锁操作,就会存在难于调试的竞态条件隐患。
重写函数可能破坏类的内部完整性。例如,某个虚方法的默认实现可能调用该类的其他方法更新其内部状态。如果重写方法没有进行这些相同的调用,那么该对象就会处于不一致的状态,从而产生无法预料的行为或导致程序崩溃。
除了这些API层面的行为问题,当你在C++中使用虚函数时,还要注意以下常见问题。
虚函数的调用必须在运行时查询虚函数表决定,而非虚函数的调用在编译时就能确定。这就使得虚函数的调用比非虚函数的调用慢。实际上,这部分开销可以忽略,特别是当函数处理的工作微不足道或当其调用不频繁时。
使用虚函数一般需要维护指向虚函数表的指针,进而增加了对象的大小。创建需要很多实例的小对象时,这可能会成为一个问题。尽管如此,与各种成员变量实际所占用的内存空间相比,这可能是微不足道的。
添加、重排或移除虚函数会破坏二进制兼容性。因为虚函数调用通常用类的虚函数表的整型偏移量表示,所以改变虚函数的顺序,或引起其他虚函数的顺序发生变化的操作,都需要重新编译现有代码,以确保客户仍然调用正确的方法。
不是所有的虚函数都能内联,因而将虚函数声明为内联是没有任何意义的。因为虚函数是运行时确定的,而内联是在编译时进行优化。但是,在有一定约束的情况下,编译器可以内联虚函数。即便如此,同内联非虚函数的情况相比,内联虚函数的例子少之又少。(谨记C++中的inline关键字仅仅是给编译器的一个提示。)
重载虚函数是需要技巧的。在派生类中声明的符号会隐藏基类中所有的同名符号。因此,基类中一组重载的虚函数会被子类中一个覆盖函数所隐藏。虽然存在一些解决此问题的方法(Dewhurst, 2002),但更好的方式是避免重载虚函数。

宿迁网络公司哪家好【宿迁企业网站百度SEO推广公司】宿迁做网站开发价格、宿迁淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、宿迁高端企业网站页面制作设计专业公司需要多少钱
服务热线
顶部
备案号: 苏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