
发表日期: 2021-04-25 12:53:09 浏览次数:135
宿迁申请400电话费用【宿迁企业全国热线电话办理】宿迁开通400电话电信价格、宿迁微信公众号代运营外包托管、宿迁网店编辑装修美工、宿迁网站推广优化大概需要多少钱
宿迁,简称宿,别称水城,古称下相、宿豫、钟吾等,江苏省地级市,宿迁位于长三角北翼,江苏省北部,是长三角北翼区域性综合交通枢纽, [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] 。
std::string FindString(const std::string &text, bool search_forward, bool case_sensitive);复制代码
用户很容易忘记第一个布尔型参数是搜索方向还是区分大小写的标记。使用错误的顺序传递标记将导致不法预料的行为,在用户意识到自己颠倒了布尔型参数之前,他们很可能会把时间浪费在调试程序上。你可以重新设计这个方法,为每个选项引入新的enum类型,以便让编译器捕获此类错误。例如:
enum SearchDirection{
FORWARD,
BACKWARD};enum CaseSensitive{
CASE_SENSITIVE,
CASE_INSENSITIVE};std::string FindString(const std::string &text,
SearchDirection direction,
CaseSensitivity case_sensitivity);复制代码这么做之后,如果用户混淆两个标记的顺序,则会报出编译错误。这不仅意味着用户不能混淆两个标记的顺序,还意味着用户编写的代码的自描述性会更好。比较result=FindString(text, true, false);和result=FindString(text, FORWARD, CASE_INSENSITIVE);
提示 使用枚举类型代替布尔类型,提高代码的可读性。
对于enum不能解决的复杂情况,为了确保每个参数都有唯一的类型,甚至可以引入新类。例如,Scott Meyers用一个Date类阐述了此方法(Meyers, 2004, 2005)。这个Date类指定了三个整数:
class Date{public:
Date(int year, int month, int day);
...};复制代码Meyers注意到,按照上面的设计客户可能会按错误的顺序传递年、月、日的值,还可能设置非法值,比如把month的值设为13。为了避免这些问题,他建议引入特定的类来表示年、月、日的值,如:
class Year{public:
explicit Year(int y):mYear(y){}
int GetYear() const {return mYear;}private:
int mYear;};class Month{public:
explicit Month(int m):mMonth(m){}
int GetMonth() const {return mMonth;}
static Month Jan() {return Month(1);}
static Month Feb() {return Month(2);}
static Month Mar() {return Month(3);}
static Month Apr() {return Month(4);}
static Month May() {return Month(5);}
static Month Jun() {return Month(6);}
static Month Jul() {return Month(7);}
static Month Aug() {return Month(8);}
static Month Sep() {return Month(9);}
static Month Oct() {return Month(10);}
static Month Nov() {return Month(11);}
static Month Dec() {return Month(12);}private:
int mMonth;};class Day{public:
explicit Day(int d):mDay(d){}
int GetDay() const {return mDay;}private:
int mDay;};复制代码现在,Date类的构造函数可以使用新增的类Year、Month以及Day作为参数。
calss Date{public:
Date(const Year &y, const Month &m, const Day &d);
...};复制代码采用此设计,客户就能使用如下没有歧义且易于理解的语法创建新的Date对象,而且使用不同的顺序指定参数值会导致编译错误。
Dare birthday(Year(1976), Month::Jul(), Day(7));复制代码
提示 避免编写拥有多个相同类型参数的函数。
优秀的API应该采用一致的设计方法,以便于用户记住其风格,进而更容易被用户采用(Blanchette, 2008)。这一点适用于API设计的各个方面,比如命名约定、参数顺序、标准设计模式的使用、内存模型语义、异常的使用和错误处理等。
考虑其中的第一个方面,一致的命名约定表示整个API都使用相同的词语表述相同的概念。例如,如果你已经决定使用动词词组Begin和End,那么就不应该再夹杂着Start和Finish这样的词语。例如,Qt3 API中的几个方法名时而使用缩略语,时而又不使用(比如像prevValue()和preciousSib- ling())。这个例子再一次说明了无论如何都要避免使用缩略语。
使用一致的方法签名也是重要的设计准备。如果有几个方法接受相似的参数列表,那么应该尽力保证这些参数的数目和顺序相一致。下面给出一个反例,考虑标准C库中的如下方法:
void bcopy(const void *s1, void *s2, size_t n);char *strncpy(char *restrict s1, const char *restrict s2, size_t n);复制代码
这两个方法都涉及将n个字节的数据从一块内存区域复制到另一块中。函数bcopy()将数据从s1复制到s2,而strncpy()是从s2复制到s1。如果开发人员没有仔细阅读这两个方法的手册就调换其用法,将会引发内存错误。的确,函数签名中有一条线索指明了接口规范的冲突:注意在两种情况中const指针的用法。但它很容被忽视,而且如果不将源指针声明为const,编译器将无法捕获错误。

宿迁申请400电话费用【宿迁企业全国热线电话办理】宿迁开通400电话电信价格、宿迁微信公众号代运营外包托管、宿迁网店编辑装修美工、宿迁网站推广优化大概需要多少钱
服务热线
顶部
备案号: 苏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