当前位置: 网站首页>小程序开发>小程序制作

泰州400电话办理【泰州网站公司】泰州百度优化、泰州域名注册、泰州网店美工、泰州微信公众号托管

发表日期: 2021-04-25 10:57:14 浏览次数:106

泰州400电话办理【泰州网站公司】泰州百度优化、泰州域名注册、泰州网店美工、泰州微信公众号托管


泰州,简称“泰”,古称海陵,是江苏省地级市,长江三角洲中心区27城之一 [1]  ,国务院批复确定的中国长江三角洲地区重要的工贸港口城市 [2]  。截至2018年,全市下辖3个区、代管3个县级市,总面积5787.26平方千米,常住人口463.57万人,城镇人口305.96万人,城镇化率66.0%,全年实现社会消费品零售总额1282.87亿元。 [3] 

泰州地处中国华东地区、江苏中部,是扬子江城市群重要组成部分,南濒长江、北邻盐城、东临南通、西接扬州,是承南启北的水陆要津,为苏中门户,自古有“水陆要津,咽喉据郡”之称。700多年前,马可·波罗游历泰州,称赞“这城不很大,但各种尘世的幸福极多”。 [4] 

泰州是国家历史文化名城,秦称海阳,汉称海陵,州建南唐,文昌北宋。南唐时(公元937年)为州治,取“国泰民安”之意,始名泰州。泰州人文荟萃、名贤辈出,“儒风之盛,素冠淮南”。王艮、刘熙载、施耐庵、郑板桥、梅兰芳是泰州文化艺术史上的杰出代表。 [4] 

泰州所辖县市(区)全部建成国家级生态示范区、全国百强县,同时泰州也是全国文明城市 [5]  、国家环保模范城市 [6]  、国家园林城市、中国优秀旅游城市、全国科技进步先进市、第一批国家农业可持续发展试验示范区。2017年中国地级市全面小康指数排名第42 [7]  。

2018年11月,入选中国城市全面小康指数前100名。 [8]  12月,被评为2018中国大陆最佳商业城市100强。2020年10月9日,被生态环境部授予第四批国家生态文明建设示范市县称号。2020年10月,被评为全国双拥模范城(县)。

那测试呢?ReplacesConsonantsWithAppropriateDigits中需要3个断言吗?为了回答这个问题,先自问额外的测试是否能增加对此功能特性的理解。答案应该是不能。所以,去掉两个断言,将剩下的断言改用ASSERT_THAT,并选择一个不同的辅音来编码,以此增加我们的信心。

c2/20/SoundexTest.cpp

   TEST_F(SoundexEncoding, ReplacesConsonantsWithAppropriateDigits) {➤    ASSERT_THAT(soundex.encode("Ax"), Eq("A200"));
   }复制代码

如果出现别的情况呢

目前的实现假定能够在encodings映射中找到传入encodedDigit()的字母。之前是为了能慢慢向前推进开发,故作此假设,因为这样就可以写最少的代码来通过每个测试。但是,依然要思考可能需要写的其他代码。

有没有可能传入encodedDigit()的字母没有出现在查找映射中?如果可能,该怎么应对?维基百科并不能回答这个问题。我们可以猜,但是最好的答案来自客户。如果没有客户,可以在网上搜索一下,搜索会马上给出一堆Soundex应用。输入A#会得到A000。答案有了:需要忽略不能识别的字母。

在TDD中,我们可以记下这个既定测试的名称,或者现在就动手写这个测试。有几次我发现提前写一些例外情形的测试,会节省后来调试的时间。所以,现在就来写这个测试吧!

c2/21/SoundexTest.cpp

TEST_F(SoundexEncoding, IgnoresNonAlphabetics) {
   ASSERT_THAT(soundex.encode("A#"), Eq("A000"));}复制代码

运行这个测试,你会发现测试不是失败了,而是崩溃了。find()返回了指向end()的迭代器,而我们却尝试解引用。当遇到这种情形,先修改一下encodedDigit(),返回一个空字符串。

c2/21/Soundex.h

   std::string encodedDigit(char letter) const {
      const std::unordered_map<char, std::string> encodings {
         {'b', "1"}, {'f', "1"}, {'p', "1"}, {'v', "1"},
         // ...
      };➤    auto it = encodings.find(letter);➤    return it == encodings.end() ? "" : it->second;
   }复制代码

一次只做一件事

我们需要测试驱动开发出代码用以转换一个词末尾剩下的字母。

c2/22/SoundexTest.cpp

TEST_F(SoundexEncoding, ReplacesMultipleConsonantsWithDigits) {
   ASSERT_THAT(soundex.encode("Acdl"), Eq("A234"));}复制代码

一个简单的方法是:除了第一个字母,遍历剩下的字母并转换。但是,目前的代码结构还不太容易支持这么做。先重构下代码吧!

但是记住,一次只做一件事。在测试驱动开发时,要保持每一步都不同。在写测试时,不要跑去重构。同样,在尝试让测试通过时也不要重构。将两件事并在一起做时,一旦出岔子会浪费时间。而且这肯定会发生的。

先把刚才写的测试注释掉,暂时停止这个测试。(在Google Mock中,在测试名称前加DISABLE_前缀会跳过执行测试。)

c2/23/SoundexTest.cpp

➤ TEST_F(SoundexEncoding, DISABLED_ReplacesMultipleConsonantsWithDigits) {
      ASSERT_THAT(soundex.encode("Acdl"), Eq("A234"));
   }复制代码

我们先专注于重构,修改一下目前的解决方案。不要将整个词传入encodedDigits(),而是将词尾(除了第一个字母外的其余字母)传入encodedDigits()。这样做会让循环处理待转换字母的代码更简洁。同时,使用empty()front()函数有助于澄清代码的意图。

c2/23/Soundex.h

      std::string encode(const std::string& word) const {➤       return zeroPad(head(word) + encodedDigits(tail(word)));
      }
   private:
      // ...➤    std::string tail(const std::string& word) const {➤       return word.substr(1);➤    }

      std::string encodedDigits(const std::string& word) const {➤       if (word.empty()) return "";➤       return encodedDigit(word.front());
      }复制代码

完成后,运行一下所有的测试,以确保改动不会破坏其他测试。至此,重构工作可以告一段落了。

回到TDD周期的开始,重新启用ReplacesMultipleConsonantsWithDigits,使其失败。可以使用一个基于范围(range)的for循环来遍历词尾,让测试通过。

c2/24/Soundex.h

   std::string encodedDigits(const std::string& word) const {
      if (word.empty()) return "";➤    std::string encoding;➤    for (auto letter: word) encoding += encodedDigit(letter);➤    return encoding;
   }复制代码

既然在encodedDigits()中加入了循环,就不用应对传入空字符串之类的防御语句了。在重构环节中,移除它。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

泰州400电话办理泰州网站公司泰州百度优化、泰州域名注册、泰州网店美工、泰州微信公众号托管

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