zoukankan      html  css  js  c++  java
  • JavaScript“尽快失败”的原则

    我第一次听说编码原则中有“尽快失败”这一条时,觉得很奇怪,为什么代码要失败?应该成功才对呀。但事实上,当代码在遇到错误的时候应该尽快的终止。为了检测各种状态,我们需要频繁的创建if语句与条件分支,而这些条件检测的结果不是成功就是失败(true&&false)。之所以会有这么多的条件检测语句,是因为如果不在构建过程中植入这些监测点(checkpoint),那么浏览器内核会执行很多无用的代码,并占用许多宝贵的CPU性能和处理时间,拖慢网站加载速度。

    根据那些判断结果为false的检测语句块放置位置的不同,有些情况下,一旦发生错误就迅速中止,而另外一些情况下则会在执行了很长一段时间的无用代码后才终止。如果我们在遍历数组之前先检测其长度,或是在处理DOM时先看看有没有我们需要的class属性,那么就可以在不满足条件时立刻中止代码的执行。因为遍历数组信息与解析DOM都是相当耗时的工作,所以最好是在执行这些任务之前先检测一下,在满足于执行条件时及早终止。正是基于上述原因,所以我才要提倡那种“尽快失败”的代码。

     这是我的示例代码:

     1 //创建在遇到错误时尽快终止的代码
     2 (function Salad(totalSlices,peopleCount){    //我要创建一个沙拉函数,用来返回派对需要的总沙拉数量
     3     "use strict";
     4 
     5     var fairness = totalSlices * peopleCount;
     6 
     7     return fairness;
     8 })();
     9 (function () {
    10     "use strict";
    11 
    12     var body = document.getElementsByTagName("body")[0],
    13         //我在此闭包函数中建立了一些变量,并将其传入salad函数以供计算
    14         
    15         partyStarter = "starlen",
    16         peopleCount = 18,
    17         Salad = 6,
    18         sliceCount = Salad * 3;
    19 
    20     if(peopleCount > 0 && Salad >0){
    21         //先检测一下我们的派对有没有人或沙拉,避免js消耗不必要的计算性能
    22         body.innerHTML += " '<p>'"+ partyStarter +","+ Salad(peopleCount,Salad) +" '</p>' "
    23     } else {
    24         body.innerHTML += "<p>参加聚会的人数或沙拉果盘不足!</p>"
    25     }
    26 
    27 })();

    在输出某些变量信息之前,我们首先检查确保这些变量信息是否保存于内存之中或者某些数组内的变量是否大于0,从而回避那些不需要执行那些计算代码了。这是在日常的开发工作中基础且重要的易引发性能的问题,所以要重视。欢迎交流

  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/xuanya/p/5929060.html
Copyright © 2011-2022 走看看