位置:编程技术网 > 区块链 > 正文 >

Google 程序员消灭 Bug 的 5 大法宝!(2)

2019年03月16日 14:22来源:未知手机版

杰克灯,音箱一个响一个不响,51费宝网51费宝网,倪匡武侠小说,石墨密封圈,柏村左阵,里美尤利娅ed2k,樊城

2)用文字表达出来

在这一步中,我们需要思考步骤1)中确定的算法,并尝试用文字表达出来。这样做可以让我们的实现步骤更加具体化,供我们稍后在写代码的时候参考。

1. 从字符串开头开始;

2. 查看每组的 3 个字符(或者说每个 searchString 中包含的所有字符)

3. 如果找到与 searchString 匹配的单词,则返回当前索引;

4. 如果已经到达字符串 sourceString 的末尾,却没有任何匹配成功,则返回 -1。

看起来不错!

3)写伪代码

伪代码不是真正的代码,但它可以模仿代码的结构。以下是上述算法的伪代码:

foreachindexinsourceString,
thereareNcharactersinsearchString
letNcharsfromindexonwardbecalledPOSSIBLE_MATCH
ifPOSSIBLE_MATCHisequaltosearchString,returnindex
attheend,ifwehaven'tfoundamatchyet,return-1.

以下的伪代码更加接近代码:

foreachindexinsourceString,
N=searchString.length
POSSIBLE_MATCH=sourceString[indextoindex+N]
ifPOSSIBLE_MATCH===searchString:
returnindex
return-1

你可以自行决定伪代码与真代码的接近程度,经过一段时间的练习,你就可以找到最适合自己的方式!

4)翻译成代码

注意:对于容易解决的问题,你可以在上一步中完成这部分的工作。

整个过程中,从这一步骤开始我们才需要考虑语法、函数参数和语言规则。或许你无法写出整段代码,但是没关系,把你知道的都写出来!

functionfindFirstMatch(searchString,sourceString){
letlength=searchString.length;
for(letindex=0;index
letpossibleMatch=
if(possibleMatch===searchString){
returnindex;
}
}
return-1;
}
;index++){

请注意,有一部分代码我没有写出来,我是故意的!因为我不确定 JavaScript 中切割字符串的语法,所以我需要在下一步中查一查。

5)不要猜

编程新手最常见的一个错误就是在互联网上寻找具体的实现方法,遇到“似乎可行”的东西,连测试都不做就放到自己的程序中。你不理解的程序越多,就越不可能找到正确的答案。

不确定的新代码每增加一处,你的程序出问题的可能性就会加倍。你不确定的地方只有一处?那很好啊,如果你的代码出了问题,那么罪魁祸首也只有一个。

如果你不确定的地方有两个?那么出问题的可能性就有 3 种:A 出了问题、B 出了问题、A 和 B 同时出了问题!如果你不确定的地方有三处呢?那么情况情况很快就失控了。

备注:你的程序出问题的可能性呈梅森素数序列:a(n) = (2^n) - 1

首先测试你的新代码。通过互联网查找代码的实现很好,但在放到程序之前,你需要做一次单独的小测试,确保这些代码的工作方式与你料想的一致。

在上一步中,我不确定 JavaScript 中选择字符串的部分语法。所以,我去 Google 了一下:

https://www.google.com/search?q=how+to+select+part+of+a+string+in+javascript

第一个搜索结果来自 w3schools。虽然有点过时,但一般都很可靠。

https://www.w3schools.com/jsref/jsref_substr.asp

根据该网页上的说法,我觉得我应该使用:

substr(index, searchString.length)

来每次提取 sourceString 的一部分。但这是一个假设,仅此而已。所以,首先我需要创建一个小例子来验证这行代码的行为:

lettestStr="abcdefghi"
letsubStr=testStr.substr(3,4);//simple,easyusage
console.log(subStr);
"defg"
subStr=testStr.substr(8,5);//askformorecharsthanexist
"i"

现在我很确定这个函数的行为。因此,我把它放入到我的程序中,如果我的程序出了问题,那么我知道不是我新加的那段代码的问题。

本文地址:http://www.reviewcode.cn/qukuailian/36927.html 转载请注明出处!

今日热点资讯