我已经编写了这些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/26455.html">C ++类头中的枚举和字符串之间的转换</a></li> <li><a href="http://129.226.226.195/post/26481.html">工作单元模式和存储库模式的界面</a></li> <li><a href="http://129.226.226.195/post/27017.html">模拟绕X的kinect旋转[凉亭错误?]</a></li> <li><a href="http://129.226.226.195/post/27743.html">是否建议要求员工创建“工作” GitHub帐户?</a></li> <li><a href="http://129.226.226.195/post/28190.html">最近有关解决$ GF(2 ^ {6120})$中的DLP的公告是否适用于建议用于密码的方案?</a></li> <li><a href="http://129.226.226.195/post/28526.html">请帮助我了解当图像逐渐淡化为黑色以使粒子逐渐褪色时会发生什么</a></li> <li><a href="http://129.226.226.195/post/28790.html">Linux上的高内存和低内存是什么?</a></li> <li><a href="http://129.226.226.195/post/29314.html">如何避免从不同用户角度描述重复的错误报告?</a></li> <li><a href="http://129.226.226.195/post/29521.html">对新任首席执行官的呼吁:放弃营销流行语</a></li> <li><a href="http://129.226.226.195/post/31242.html">在ESP8266中用于实现CoAP的库是什么?</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><!--35.94 ms , 11 query , 1484kb memory , 0 error-->