
发表日期: 2021-04-25 10:38:47 浏览次数:104
泰州网站建设【泰州网络公司】泰州做网站、泰州微信公众号开发、泰州网站设计、泰州小程序制作
泰州,简称“泰”,古称海陵,是江苏省地级市,长江三角洲中心区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月,被评为全国双拥模范城(县)。
直接返回传入的字符串可以吗?
c2/8/SoundexTest.cpp
class Soundex
{
public:
std::string encode(const std::string& word) const {➤ return word;
}
};复制代码任何时候,一个完整的测试集合声明了系统中期望的行为。这里蕴含着一个潜台词:如果一个行为没有对应的测试来描述,那这个行为要么不存在,要么不是期望的(或者测试本身没有尽到描述行为的职责)。
那该怎么办呢?现在有一个测试。但它只支持单个字母的单词。所以,可以假定Soundex类仅需要支持单个字母的单词,至少目前是这样。如果所有的单词都只有一个字母,那么最简单的通用方案就是直接返回传给encode()的单词。
[其他TDD流派会想,如果不这样做,编出来的代码会是什么样的?一个可行的技巧是Triangulation6,写一个类似的断言,但是有不同的数据期望。]
6Test Driven Development: By Example [Bec02]
刚才的改动都很小且琐碎,但是当下完成这些改动是合时宜的。TDD中的重构步骤给予我们关注所有问题的契机,不论问题是大还是小,都是由小的、独立的代码改变引起的。当历经TDD的各个周期时,我们会使用重构来审阅设计,同时修复出现的所有问题。
重构的主要关注点是提升表达能力,去除重复代码。就代码的可维护性来说,这两个点最有裨益。此外,还有一些其他的设计知识,譬如SOLID设计原则和代码坏味。
问答时间到了!
提问:你真的对明知道将要替换的东西进行硬编码吗?
回答:我总是被问到这个问题。答案是肯定的。
提问:这似乎不明智!
回答:这不是个问题,但是在第一次接触这种方式时,认为它不明智是正常的。我也曾经有过这样的感受。我是过来人。
提问:你会一直以此方式工作吗?如果对所有东西硬编码,那怎么能够搞定所有事情?
回答:这是两个问题,但我很乐意一并回答!是的,我们会一直以增量的方式工作。这个技巧能快速让测试通过。不要担心,硬编码的东西最多存在一小会。我们心里清楚离目标还有一段距离,所以需要写更多的测试来描述这些行为。在这个例子中,还要实现其他的规则。在接下来编写其他测试时,我们将会用有趣的逻辑替换掉硬编码,使测试通过。
增量性是TDD取得成功的关键。乍一看,增量方法显得非常不自然且速度慢。但是,随着时间的推移,小步的增量开发反而能够加快你的速度,部分原因是这可以避开由一次编写而成的大量且复杂的代码产生的错误。坚持它!7
7小步开发出来的代码更容易适应未来的需求和变化。——译者注
精明的读者或许注意到了,我们编写的代码并不完全符合Soundex的规范。规则4的最后说,如果没有三个数字,需要补零。喔,这就是规范的乐趣所在!我们必须认真且全面地阅读它,彻底理解各个部分是怎样交互的。(最好与用户沟通,他会阐明哪些是期望的。)目前来说,规则4和我们所实现的代码尚不吻合。
想象一下,这些规则是逐个向我们提出的。“先把规则1的第一部分完成,然后再给你下一条规则。”TDD与后一种方法一致,规范的各个部分是增量地编写进系统。这一方法可以使我们以任何顺序一点点地开发系统,并持续地验证,向前推进。这里有一个权衡:相比于多做一点计划而言,我们可能要花费更多的时间合并新的代码。稍后再来讨论这个问题。目前来说,先看看没有这个权衡,会发生什么。
现在有两个工作要做:为新行为写一个新测试;修改已有的测试以满足规范。下面是新测试:
c2/9/SoundexTest.cpp
TEST(SoundexEncoding, PadsWithZerosToEnsureThreeDigits) {
Soundex soundex;
auto encoded = soundex.encode("I");
ASSERT_THAT(encoded, Eq("I000"));}复制代码(一个审阅人提出问题:“为什么在编写测试前不认真地阅读Soundex规则呢?”好问题!的确,我们没有认真阅读规范。TDD的一个强项就是在信息不完全的情况下,我们依然可以向前推进,并且可以在得到新信息后及早纠正之前的代码。)
加入的每个测试都是独立的。我们不会将一个测试的结果作为另一个测试的前提。每个测试必须设置好自己的上下文。所以,新加的测试需要创建自己的Soundex类实例。
运行测试后,测试结果提示,encode()返回的是"I"而非"I000"。让它通过很简单。
c2/9/SoundexTest.cpp
std::string encode(const std::string& word) const {➤ return word + "000";
}复制代码硬编码可能再次导致事情乱作一团,但它能帮助我们不跑偏。就我们目前的测试而言,Soundex类不需要额外的行为。此外,通过采取尽可能小的步伐,我们在往系统中加入新行为时,必须编写额外的测试。
新的测试通过了,但是第一个测试失败了。这是因为测试描述的行为和维基百科上列出的规范不吻合。
如果一个测试通过了,就说明这个测试正确地描述了系统是如何工作的。如果测试设计得好,那么会起到例子的作用,比规范更易读。在接下来的练习中,我们会继续专注让测试具有可读性(我偶尔甚至把它们称之为规范)。

服务热线
顶部
备案号: 苏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