我已经编写了这些JavaScript和jQuery的混乱代码。这里的一切都按预期工作完美,但这确实是一团糟。用最佳实践等方法清理此事的最佳方法是什么?

评论

您能再介绍一下这段代码吗?

没有HTML转义?我想可以保证Person.Name中没有<(不是用户输入)吗?

@JoshKirkpatrick尽管在这种情况下这不是安全问题,但我仍然建议不要将数据视为HTML(如果不是HTML的话)(在这种情况下,构造td元素,然后设置其文本,而不是文本)将文本连接成HTML字符串)。

由于您正在构建大量HTML,因此可以签出模板库,例如Mustache.js或Handlebars.js。这些库有其自己的条件处理方式,可能会简化此过程的很大一部分。

只是语义:实际上并没有深层嵌套。嵌套是指一个{...}出现在另一个{...}内部。我不确定您会怎么称呼这种情况。

#1 楼

有一些好的做法可以帮助您解决此问题。您可能还会遇到难以调试的奇怪格式错误。不必为头痛而烦恼,并始终以与打开标签相反的顺序关闭标签。整体表,而不是每行一个。
您还可以使用W3C官方HTML验证器来确保生成的输出是有效的HTML,并调整JavaScript以使其匹配。块;仅构造一次内容
如果您以后决定更改原始HTML的生成方式(例如从表移动到div和spans),则可以更轻松地进行更新。
如果不使用CSS,请避免使用简写形式所有属性
使用<tbody>意味着已清除所有其他已设置的CSS背景属性(<tbody>ifbackground: XYZcolor;background-image)。如果这是您的意图,请保留。如果不是,请更精确地使用样式,并仅使用background-repeat。这可能现在对您没有影响,但是是一个避免以后再出现意外的好习惯。避免使用background-attachment属性
这将使您能够:

给出有意义的名称,以指示为什么为单元格着色的特定方式(以便您可以在浏览器中使用“查看源代码”进行调试)
独立于JavaScript来调整样式(这样,如果客户希望红细胞稍微变红,就不需要让JavaScript开发人员参与)
避免此SO问题中提到的问题:



与以前的建议结合使用会给我们:
<tbody><tr><td>....</td></tr></tbody>

使用适当的CSS:
 background-position 

可以将类似的策略应用于代码的其他逻辑块。
还可以将多个CSS类添加到单个标签background-color: XYZcolor;中。有时,这对于简化style= / .lateByOneHour { background-color: red; } .notOutYet { background-color: red; } .backFromDinner { background-color: lime; } .outForDinner { background-color: yellow; } .inNormally { background-color: lime; } .defaultStatus { background-color: red; } 逻辑很有用,但此处似乎并非如此。不过,最好将其放在后兜。
为获得更好的性能,请在循环外部调用<td class="class1 class2">
jQuery网站本身上有一个页面介绍为何if循环缓慢,但要点是与elseappendTo()一样,触摸DOM非常昂贵。在循环的末尾添加一次巨大的HTML(整个表)块,比在循环的每次迭代中添加少量HTML(仅一行)要快得多。

评论


\ $ \ begingroup \ $
我想指出,根据上下文,不关闭某些标签是完全有效的。例如,,和无需显式关闭;当它们的包含元素(分别为,或)关闭时,或在合适的替代项(例如分别为,另一个或
)关闭时,它们自动关闭)已打开。
\ $ \ endgroup \ $
–分裂
2014年8月20日在18:01

\ $ \ begingroup \ $
它不会通过HTML验证程序吗?
\ $ \ endgroup \ $
–IEatBagels
2014年8月20日在18:12

\ $ \ begingroup \ $
虽然确实不需要关闭此类标签,但作为新手最好还是谨慎一点。如果习惯上总是关闭一个封闭的标签,则不必记住哪个标签是自动关闭的。
\ $ \ endgroup \ $
–阿尔弗雷德·阿姆斯特朗(Alfred Armstrong)
14年8月20日在19:01

\ $ \ begingroup \ $
@TopinFrassi,以下通过W3C的验证器:<!DOCTYPE html> Title </ title> </ head> <body> <table> <tbody> <tr> <td > </ table> </ body> <br /> \ $ \ endgroup \ $ <br /> –丹克鲁姆 <br /> 2014年8月20日在19:15 <br /><hr />\ $ \ begingroup \ $ <br />它是否比以下版本更真实:w3.org/html/wg/drafts/html/master/syntax.html#the-doctype? <br /> \ $ \ endgroup \ $ <br /> –丹克鲁姆 <br /> 14年8月20日在20:55 <br /><hr /></div></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #2 楼</h3>这是一个很大的条件混乱。希望它们都与它们附近的注释匹配,尽管给出的典型代码可能并非如此。您正在重复很多HTML代码,可以使用@ V31所示的变量来解决这些问题。概括这些条件及其应用方式。首先,您可以创建短函数来帮助确保注释与条件匹配,并便于将来的维护者使用,减少代码重复(DRY),并可能允许在其他区域中重用。提供了一个很好的例子。<br /> <br /> <pre><code>// if the person has swiped off but not back on and one hour has elapsed if (Person.DifHours > 1 && Person.ON === false) { </code></pre> <br /> <br />我看不到对<code>Person.OFF</code>的引用。这是错误还是故意的?系统是否确保<code>Person.ON === false</code>强制<code>Person.OFF</code>为<code>true</code>?假设代码正确,我们可以定义<br /> <br /> <pre><code>function hasBeenOutForLongerThanOneHour(person) { return !person.ON && person.DifHours > 1; } </code></pre> <br /> <br />将其应用于第一组产量中的其余条件<br /> <br /> > <br />我在函数名称中使用了您的注释,但您可能会发现其中一些比其他更具描述性,而某些则未指定。例如,<code>isBackFromDinner</code>只看<code>Person.ON</code>,但是刚上班的人也不会上班吗?如果他们还没有去吃晚饭,就不会称这个人为“晚饭回来”。并且将其称为“中断”比“晚餐”具有更广泛的适用性。每个表都会将函数映射到用于构建单元格的样式和值。所有样式都可以归结为两个变体:使用白底白字或应用背景色。让我们用颜色<code>hide</code>来表示第一个选项。 <code>Name</code>单元格:<br /> <br /><pre><code>function isOut(person) { return person.OUT; } function isBackFromDinner(person) { return person.ON; } function hasBeenOnBreakLessThanOneHour(person) { return person.OFF; } function hasClockedOn(person) { return person.Clock; } </code></pre> <br /> <br /> <br />注意:我选择数组是因为每个数组只有三个元素,但是使用对象可以使事情更清楚。<br /> <br /> <br />您将在每个条件块中使用这种表格格式,我们将创建一个使用数据表和人员构建表格单元的函数。<br /> <br /> <pre><code>var NAME_STYLE_FILTERS = [ // filter function, field name, style to apply [hasBeenOutForLongerThanOneHour, 'Name', 'red'], [isOut, 'Name', 'red'], [isBackFromDinner, 'Name', 'lime'], [hasBeenOnBreakLessThanOneHour, 'Name', 'yellow'], [hasClockedOn, 'Name', 'lime'], [null, 'Name', 'red'], ]; </code></pre> <br /> <br />将其放入在一起,您将拥有:<br /> <br /> <pre><code>function buildStyledCell(person, filters) { var match, text, style; filters.some(function (filter) { if (!style[0] || style[0](person) { match = filter; return true; } }; text = person[match[1]]; style = match[2] == 'hide' ? 'background-color: white; color: white' : 'background-color: ' + match[2]; return '<td style="' + style + '">' + text + '</td>'; } </code></pre> <br /> <br />顺便说一句,这里的标签是什么?这看起来无效:<br /> <br /> <pre><code>var content = '<tr>' content += '<tbody>'; content += '<td>' + Person.Op + '</td>'; content += buildStyledCell(Person, NAME_STYLE_FILTERS); content += '<td>' + Person.WorkHours + ' </td>'; content += '<td>' + Person.Start + ' </td>'; content += '<td>' + Person.End + ' </td>'; content += buildStyledCell(Person, CLOCK_STYLE_FILTERS); content += buildStyledCell(Person, OFF_OUT_STYLE_FILTERS); content += '</tr>'; content += '</tbody>'; content += '<p>'; $(content).appendTo("tbody"); </code></pre> <br /> <br />一般建议<br /> <br /> <br /> <br /> <br />,只要您使用的是<code>Object.keys</code>您也可以使用同样来自ES5的<code>Array.prototype.forEach</code>。请注意,如果<code>data.People</code>是<code>null</code>或<code>undefined</code>,则将失败-就像<code>$.each</code>一样。 > <br />当我阅读<br /> <br /> <pre><code><tr> <tbody> <-- why? only one per table <td>...</td> ... </tr> </tbody> <-- out of order with </tr>, but again not needed </code></pre> <br /> <br />我立即问自己:“除了<code>true</code>和<code>false</code>之外,还有哪些其他值,它们是什么意思? <code>Person.OUT</code>意味着我们不知道它们是否在外面,或者如果今天还没有到来,它将变成<code>null</code>吗?“值,并且使用<code>undefined</code>和<code>ON</code>只会使代码复杂化。稍后使用<code>OFF</code>会加剧读者的困惑。<br /> <br />将其简化为<br /> <br /> <pre><code>if (Person.OUT !== false) </code></pre> <br /> <br />和<br /> <br /> <pre><code>if (Person.OUT) </code></pre> <br /> <br />如果可以的话,它更像是散文而不是代码。<br /> <br />您不会关闭条件内部的<code>OUT</code>元素。<br /> <br />您可以删除出现多次的超级有用的评论:<br /> <br /> <pre><code>if (... && !Person.ON && ...) </code></pre> <br /> <br /> <br /><br /><div class='comment'><h4 style='font-size: 14px;background: #f5f5f5;color: #2fa4e7;padding: 10px;margin: 10px 0;'>评论</h4><hr />\ $ \ begingroup \ $ <br />尼特夫妇:$ .each将遍历一个非数组对象就好了。它只是将键传递给回调,而不是索引。更重要的是,您绝不应该依赖Object.keys()返回的数组的绝对索引,因为不能保证排序。保证与for ..的顺序相同,但是不应期望两者都具有任何特定的顺序。 <br /> \ $ \ endgroup \ $ <br /> –codelahoma <br /> 2014年8月21日1:00 <br /> <br /> <br /><hr />\ $ \ begingroup \ $ <br />不要简单地将数据连接成HTML。您没有做任何转义...使用.text()代替。 <br /> \ $ \ endgroup \ $ <br /> –布拉德 <br /> 14年8月21日在3:03 <br /><hr />\ $ \ begingroup \ $ <br /> @codelahoma我怀疑数据。人是一个数组而不是对象,因为OP选择i作为键/索引而不是键,并在回调中将其忽略。至于使用Object.keys(PersonObj)[0],这就是OP所使用的。没有示例JSON,我们只能猜测意图。 <br /> \ $ \ endgroup \ $ <br /> – David Harkness <br /> 2014年8月21日在9:39 <br /><hr />\ $ \ begingroup \ $ <br /> @Brad有趣的是,构建从文档中分离出来的表DOM元素以能够使用.text()代替无DOM转义功能的性能代价。 <br /> \ $ \ endgroup \ $ <br /> – David Harkness <br /> 2014年8月21日在9:42 <br /><hr />\ $ \ begingroup \ $ <br /> @DavidHarkness哦,它肯定慢一些,但是您的意思是?您的代码显然不正确,一旦有人在其中一个带有HTML的变量中输入一个字符串,它就会失败。另外,您不希望有人将<script src =“ somethingEvil.js”> </ script>用作用户名。 <br /> \ $ \ endgroup \ $ <br /> –布拉德 <br /> 2014年8月21日在12:56 <br /><hr /></div></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #3 楼</h3>可以使用颜色变量来缩小第一个<code>if</code>块;这样的事情:<br /> <br /> <pre><code>var color = "red"; // if the person has swiped off but not back on and one hour has elapsed if (Person.DifHours > 1 && (Person.ON === false || Person.OUT !==false)) { color = "red"; // If the person has swiped back on from dinner set to lime } else if (Person.ON !== false || Person.Clock !== false) { color = "lime"; // If the person has swiped off for dinner but 1 hour has not elapsed set to yellow } else if (Person.OFF !== false) { color = "yellow"; } content += "<td style=\" background: "+color+";\">" + Person.OUT; </code></pre> <br /> <br />您可以对其余的<code>if</code>块执行相同的操作。如果将条件相同的条件与<code>&&</code>和<code>||</code>结合使用,则可以减少代码长度,同时使其更具可读性。<br /><br /><div class='comment'><h4 style='font-size: 14px;background: #f5f5f5;color: #2fa4e7;padding: 10px;margin: 10px 0;'>评论</h4><hr />\ $ \ begingroup \ $ <br />回退导致背景红色,在这种情况下,Person.DifHours <= 1和Person.OUT === false将导致红色。只需检查可变颜色的默认值即可。它是红色的。因此,在这种情况下,默认值(后备值)为红色 <br /> \ $ \ endgroup \ $ <br /> – V31 <br /> 14年8月20日在16:31 <br /><hr />\ $ \ begingroup \ $ <br />要说,如果在某些情况下带有和/或与颜色代码相同的语句在某些情况下可以相同,则OP可以合并。 <br /> \ $ \ endgroup \ $ <br /> – V31 <br /> 14年8月20日在16:38 <br /><hr />\ $ \ begingroup \ $ <br /> @Schism,作者确实写过这样的东西,很高兴指出错误,但-1似乎很苛刻 <br /> \ $ \ endgroup \ $ <br /> – konijn <br /> 14年8月20日在16:41 <br /><hr />\ $ \ begingroup \ $ <br /> @konijn如果评论改变了代码的逻辑,我认为它应该为-1。 Buuut,我错过了第一行;我进行了相对较小的修改,以便可以将投票更改为+1。 <br /> \ $ \ endgroup \ $ <br /> –分裂 <br /> 14年8月20日在16:45 <br /><hr />\ $ \ begingroup \ $ <br /> @Schism:是的,这就是我想传达的实际含义:) <br /> \ $ \ endgroup \ $ <br /> – V31 <br /> 14年8月20日在16:45 <br /><hr /></div></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #4 楼</h3>和往常一样,我一天迟到,缺一美元。 :) <br /> <br />您实际上是使用视图模型的一个很好的案例。所有<code>if</code>都是您的视图模型中的方法,以为<code><td></code>标签返回正确的CSS类。这有几个好处:<br /> <br /> <br />视图逻辑现在是其自己的组件,可以使用那里的任何JavaScript单元测试框架进行测试<br />用于连接HTML的代码变得更加精简和干净。<br /> <br />此外,通过将字符串附加到Array而不是连续进行字符串连接,可以稍微提高速度。 > <br /> <pre><code>function EmployeeStatusViewModel(person) { this.person = person || null; } EmployeeStatusViewModel.prototype = { person: null, constructor: EmployeeStatusViewModel, getOffStatus: function() { return this.person.OFF ? "out" : ""; }, getOnStatus: function() { return this.person.ON ? "on" : ""; }, getSwipeStatus: function() { var swipeStatus = "defaultStatus"; // if the person has swiped off but not back on and one hour has elapsed if (this.person.DifHours > 1 && !this.person.ON) { swipeStatus = "lateByOneHour"; } else if (this.person.OUT) { swipeStatus = "notOutYet"; // If the this.person has swiped back on from dinner set to lime } else if (this.person.ON) { swipeStatus = "backFromDinner"; // If the this.person has swiped of for dinner but 1 hour has not elapsed set to yellow } else if (this.person.OFF) { swipeStatus = "outForDinner"; // If the person has clocked on set to lime } else if (this.person.Clock) { swipeStatus = "inNormally"; } return swipeStatus; } }; </code></pre> <br /> <br />您获取数据并随后构建HTML的调用可以使用Array而不是连接越来越大的字符串。其次,您只需要调用<code>appendTo</code>即可: br /> <br />样式更改<br /> <br />鉴于我看到以大写字母开头的属性名称,您可能正在服务器上使用.NET?在JavaScript中,仅构造函数以大写字母开头,例如XMLHttpRequest,数组,对象。局部变量应以小写字母开头。<br /> <br />实际上,属性名称也应以小写字母开头,但是如果您使用.NET并将对象序列化为JSON,它将转换属性名称从字面上看,在.NET中使用PascalCase作为属性名称是一种流行的模式,因此在这方面您无能为力。<br /><br /></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #5 楼</h3>按照@Matt Giltaji所说的,我删除了所有HTML样式并将其移入CSS。然后,我将<code>$(content).appendTo("tbody");</code>移出了循环,以提高性能。然后,在调整了几件事之后,我通过HTML验证器将其扔了出去,而且一切似乎都可以检出。<br /></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #6 楼</h3>我喜欢的一个技巧是将信息(知识)与决策逻辑分开。因此,无需太多更改代码即可:<br /> <br /> <pre><code>// What we know var isOut = Person.OUT !== false; var hasSwipedBack = Person.ON !== false; var hasSwipedOff = Person.OFF !== false; var hasClockedOn = Person.Clock !== false; var hasNotSwipedBackInOneHour = Person.DifHours > 1 && Person.ON === false; // What we will do if (hasNotSwipedBackInOneHour) { content += '<td style=" background: red;">' + Person.Name; } else if (isOut) { content += '<td style=" background: red;">' + Person.Name; } else if (hasSwipedBack) { content += '<td style=" background: lime;">' + Person.Name; } else if (hasSwipedOff) { content += '<td style=" background: yellow;">' + Person.Name; } else if (hasClockedOn) { content += '<td style=" background: lime;">' + Person.Name; } else { content += '<td style=" background: Red;">' + Person.Name; } </code></pre> <br /> <br />这样可以减少注释的需要,分离一些问题,并使代码更具可读性。<br /> <br />劣势:如果知识的确定是处理器密集型的,并且并不总是使用某些知识,那么在顶部进行全部计算是效率低下的。在您的代码中,符合DRY原则:<br /> <br /> <pre><code>// What we will do var newColor = 'red'; if (hasNotSwipedBackInOneHour) { // keep "out" color } else if (isOut) { // keep "out" color } else if (hasSwipedBack) { newColor = 'lime'; } else if (hasSwipedOff) { newColor = 'yellow'; } else if (hasClockedOn) { newColor = 'lime'; } else { // keep "out" color } content += '<td style=" background: '+newColor+';">' + Person.Name; </code></pre> <br /> <br />如果以后您决定要设置(或只是尝试)<code>background-color</code>,这将是有利的也许用<code>border</code>代替<code>background</code>属性。<br /> <br />最后,以上内容可以用一个表达式表示:<br /> <br /> <pre><code>// Don't repeat color values, in case we want to change them in future // Define them just once instead var IN_COLOR = 'lime'; var OUT_COLOR = 'red'; // What we will do var newColor = isOut || hasNotSwipedBackInOneHour ? OUT_COLOR : hasSwipedBack ? IN_COLOR : hasSwipedOff ? 'yellow' : hasClockedOn ? IN_COLOR : OUT_COLOR; </code></pre> <br /><br /></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #7 楼</h3>我建议从使用<code>switch</code>语句开始。<br /> <br />每当我看到深度嵌套的/或很多if的时候,我就会查看该语言是否支持case或switch语句,而javascript是否支持。<br /> <br /> <pre><code>switch(expression) { case n: code block break; case n: code block break; default: default code block } </code></pre> <br /> <br /> http://www.w3schools.com/js/js_switch.asp <br /><br /><div class='comment'><h4 style='font-size: 14px;background: #f5f5f5;color: #2fa4e7;padding: 10px;margin: 10px 0;'>评论</h4><hr />\ $ \ begingroup \ $ 不鼓励使用<br />开关及其所有等效项,因为它们很难阅读。因此,许多语言都没有这个概念。 <br /> \ $ \ endgroup \ $ <br /> – ElmoVanKielmo <br /> 14年8月21日在13:11 <br /><hr />\ $ \ begingroup \ $ <br />像大多数语言一样,JavaScript的switch接受每种情况的值,而不接受另一个表达式。 <br /> \ $ \ endgroup \ $ <br /> – David Harkness <br /> 2014年8月22日下午5:43 <br /><hr /></div></div><div class='answer'><h3 style='font-size: 16px;background: #434a54;color: #fff;padding: 10px;margin: 10px 0;'> #8 楼</h3>您也可以从结果开始,然后返回参数。然后,您将看到只有3个结果,可以很容易地将“红色”颜色假定为默认结果,这仅给我们2个(!)结果,而在所有其他情况下则为默认结果。<br />我使用了C语法(我相信Java和JavaScript几乎相同),在这里您可以说“等等!=假”只是“等等”和“ ||”表示逻辑“或”。希望您所使用的语言也不是那么复杂,并且允许这样的表达式。方法。<br /> <br />我也鼓励您使用CSS而不是直接从代码编写html标签。这就是我所说的“关注点分离”,它将在将来帮助您处理大型项目,因为您将能够将大脑从一个任务转换为另一个任务,并且不需要在每个大脑中都拥有一张大图时间,只是其中的一小部分。<br />大脑确实喜欢它。<br /><br /></div> </div> <div class="post-footer"><b>本文标签:</b> <a href="http://129.226.226.195/tags/javascript/" target="_blank"> javascript </a> <a href="http://129.226.226.195/tags/jquery/" target="_blank"> jquery </a> <a href="http://129.226.226.195/tags/html/" target="_blank"> html </a> <a href="http://129.226.226.195/tags/formatting/" target="_blank"> formatting </a> </div> </div> <div class="box boxmt nearbypost"> <div class="alignleft"><a href="http://129.226.226.195/post/16815.html" >卡片组作为面试练习</a></div> <div class="alignright"><a href="http://129.226.226.195/post/16817.html">没有代码膨胀的记录</a></div> </div> </div> <div class="aside"> <div class="box widget" id="divTags"> <div class="title">标签列表</div><ul><li><a href="http://129.226.226.195/tags/java/">java<span class="tag-count"> (11)</span></a></li> <li><a href="http://129.226.226.195/tags/r/">r<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/r-faq/">r-faq<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/javascript/">javascript<span class="tag-count"> (17)</span></a></li> <li><a href="http://129.226.226.195/tags/jquery/">jquery<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/asynchronous/">asynchronous<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/php/">php<span class="tag-count"> (17)</span></a></li> <li><a href="http://129.226.226.195/tags/mysql/">mysql<span class="tag-count"> (7)</span></a></li> <li><a href="http://129.226.226.195/tags/sql/">sql<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/html/">html<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/regex/">regex<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/arrays/">arrays<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/variables/">variables<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/warnings/">warnings<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/language-agnostic/">language-agnostic<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/c%2B%2B/">c++<span class="tag-count"> (9)</span></a></li> <li><a href="http://129.226.226.195/tags/c%2B%2B-faq/">c++-faq<span class="tag-count"> (8)</span></a></li> <li><a href="http://129.226.226.195/tags/parsing/">parsing<span class="tag-count"> (2)</span></a></li> <li><a href="http://129.226.226.195/tags/debugging/">debugging<span class="tag-count"> (5)</span></a></li> <li><a href="http://129.226.226.195/tags/c/">c<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/error-handling/">error-handling<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/python/">python<span class="tag-count"> (10)</span></a></li> <li><a href="http://129.226.226.195/tags/pandas/">pandas<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/android/">android<span class="tag-count"> (3)</span></a></li> <li><a href="http://129.226.226.195/tags/list/">list<span class="tag-count"> (3)</span></a></li> </ul> </div><div class="box widget" id="divPrevious"> <div class="title">最近发表</div><ul><li><a href="http://129.226.226.195/post/18326.html">IP地址错误的错误掩码</a></li> <li><a href="http://129.226.226.195/post/18325.html">在Cisco IOS中自动进行配置备份(每分钟)</a></li> <li><a href="http://129.226.226.195/post/18324.html">VRRP和HSRP有什么区别?</a></li> <li><a href="http://129.226.226.195/post/18323.html">IP地址如何映射到MAC地址?</a></li> <li><a href="http://129.226.226.195/post/18322.html">网站可以识别我的MAC地址吗?</a></li> <li><a href="http://129.226.226.195/post/18321.html">在STP中如何选择根桥?</a></li> <li><a href="http://129.226.226.195/post/18320.html">为什么要使用三根以太网电缆将交换机连接到路由器?</a></li> <li><a href="http://129.226.226.195/post/18319.html">为什么10.1.255.255是无效的广播地址?</a></li> <li><a href="http://129.226.226.195/post/18318.html">为什么将IP地址分配给每个接口而不是设备?这将意味着什么?</a></li> <li><a href="http://129.226.226.195/post/18317.html">为什么Visual Studio 2013不愿意运行我的Web性能/负载测试?</a></li> <li><a href="http://129.226.226.195/post/18316.html">对测试代码了解太多会不利吗?</a></li> <li><a href="http://129.226.226.195/post/18315.html">如何隔离错误?</a></li> <li><a href="http://129.226.226.195/post/18314.html">如何使用Selenium和WebDriver清除localStorage</a></li> <li><a href="http://129.226.226.195/post/18313.html">评估测试项目</a></li> <li><a href="http://129.226.226.195/post/18312.html">我如何说服管理层我们需要一个正式的质量保证部门?</a></li> <li><a href="http://129.226.226.195/post/18311.html">FluentWait与WebDriverWait有何不同?</a></li> <li><a href="http://129.226.226.195/post/18310.html">简历和求职建议-从开发到测试的职业转变</a></li> <li><a href="http://129.226.226.195/post/18309.html">您如何等待Selenium 2中的jQuery Ajax调用完成</a></li> <li><a href="http://129.226.226.195/post/18308.html">在持续开发下测试应用程序</a></li> <li><a href="http://129.226.226.195/post/18307.html">Selenium的页面加载默认超时是多少?</a></li> <li><a href="http://129.226.226.195/post/18306.html">IT项目中软件测试的真正商业价值是什么?</a></li> <li><a href="http://129.226.226.195/post/18305.html">系统测试与系统集成测试(SIT)有何不同?</a></li> <li><a href="http://129.226.226.195/post/18304.html">如何找到我们的“质量保证流程”的弱点?</a></li> <li><a href="http://129.226.226.195/post/18303.html">测试人员应如何处理生产中发现的错误?</a></li> <li><a href="http://129.226.226.195/post/18302.html">如果我不使用TDD但想过渡到敏捷,那我应该回去创建那些单元测试吗?</a></li> <li><a href="http://129.226.226.195/post/18301.html">代码覆盖率和测试覆盖率有什么区别?</a></li> <li><a href="http://129.226.226.195/post/18300.html">当团队想要忽略关键但难以重现的错误时,我应该如何应对</a></li> <li><a href="http://129.226.226.195/post/18299.html">测试人员应该修复错误吗?</a></li> <li><a href="http://129.226.226.195/post/18298.html">审核测试自动化代码的良好实践</a></li> <li><a href="http://129.226.226.195/post/18297.html">质量检查人员应该能够编写测试代码吗?</a></li> </ul> </div> <div class="box widget" > <div class="title">随机文章</div> <ul> <li><a href="http://129.226.226.195/post/22582.html">何时使用EKF,何时使用卡尔曼滤波器?</a></li> <li><a href="http://129.226.226.195/post/22736.html">有没有一种方法可以可靠地在文件历史记录中往返</a></li> <li><a href="http://129.226.226.195/post/22813.html">PDF文件分割器</a></li> <li><a href="http://129.226.226.195/post/23049.html">基于RGB的路径跟踪器的更精确的菲涅耳近似</a></li> <li><a href="http://129.226.226.195/post/23131.html">分析释放后使用的错误(污点分析?)</a></li> <li><a href="http://129.226.226.195/post/23608.html">如何避免出现“您是否危害CODEZ”的情况?</a></li> <li><a href="http://129.226.226.195/post/23913.html">当某些页面被永久删除后,返回410而不是404是否有意义?</a></li> <li><a href="http://129.226.226.195/post/24971.html">您如何管理您的知识库? [关闭]</a></li> <li><a href="http://129.226.226.195/post/25508.html">如何左对齐两列文字? [重复]</a></li> <li><a href="http://129.226.226.195/post/26336.html">银行希望通过电话获得我的网上银行PIN</a></li> </ul> </div> </div> </div> <style> code{ padding: 2px 4px; color: #242729; background-color: #e4e6e8; border-radius: 3px; } pre{ padding: 12px; color: #242729; background-color: #e4e6e8; border-radius: 5px; overflow: auto; max-height: 600px; } pre code{ padding:0; } </style><footer class="footer"> <div class="global-width footer-box"> <div class="copyright" id="copyr"><span>声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。</span> <script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1279522828&web_id=1279522828"></script> </div> </div> <span id="go-to-top"></span> </footer> </body> </html><!--48.03 ms , 11 query , 1500kb memory , 0 error-->