• 读《编写可维护的JavaScript》第九、十章总结


    第九章 将配置数据从代码中分离出来

    9.2 抽离配置数据

    这章比较好理解,也非常常见,作者给的俩个例子就能说明一切:

        // 将配置数据藏在代码中
        function validate(value) {
            if (!value) {
                alert("Invalid value");
                location.href = "/errors/invalid.php";
            }
        }
        
        function toggleSelected(element) {
            if (hasClass(element, "selected")) {
                removeClass(element, "selected");
            } else {
                addClass(element, "selected");
            }
        }

    这样的代码肯定不利于修改和维护,将配置数据(hardcoded)或者我们称为硬编码(写死的值)提取出来就豁然开朗了:

     var config = {
           MSG_INVALID_VALUE: "Invalid value",
           URL_INVALID: "/errors/invalid.php",
           CSS_SELECTED: "selected"
       };
    
       function validate(value) {
           if (!value) {
               alert(config.MSG_INVALID_VALUE);
               location.href = config.URL_INVALID;
           }
       }
    
       function toggleSelected(element) {
           if (hasClass(element, config.CSS_SELECTED)) {
               removeClass(element, config.CSS_SELECTED);
           } else {
               addClass(element, config.CSS_SELECTED);
           }
       }

     9.3 保存配置数据

    作者更加推荐将配置数据放于独立的文件中,这样更有利于管理。

    第十章 抛出自定义错误

    10.2 在JavaScript中抛出错误

    缺乏经验的开发者有时直接将一个字符串作为错误抛出,如:

      // 不好的写法  
      throw "message";

    这样确实能够跑出一个错误,但不是所有的浏览器做出的响应都会按照你的预期。FireFox、Opera和Chrome都将显示一条"uncaught exception"消息,同时它将包含上述消息字符串。Safari和IE只是简陋的抛出一个”uncaught exception“错误,完全不提供上述消息字符串,这种方式对调试无益。

    所以作者推荐对于所有浏览器,唯一不出错的显示自定义的错误消息方式就是用一个Error对象。

    throw new Error("Something bad happened")

    10.3 抛出错误的好处

    作者推荐总是在错误信息中包含函数名称,以及函数失败的原因:

    function getDivs(element) {
          if (element && element.getElementsByTagName) {
              return element.getElementsByTagName("div");
          } else {
              throw new Error("getDivs(): Argument must be a DOM element");
          }
      }

    10.4 何时抛出错误

    一句话:辨识代码中哪些部分在特定情况下最有可能导致失败,并只在哪些地方抛出错误才是关键所在。

    作者还写了一些关于抛出错误很好的经验法则:

    • 一旦修复了一个很难调试的错误,尝试增加一俩个自定义错误。当再次发生错误时,这将有助于更容易地解决问题。
    • 如果正在编写代码,思考一下:”我希望[某些事情]不会发生,如果发生,我的代码就会一团糟“。这时,如果”某些事情“发生,就抛出一个错误。
    • 如果正在编写的代码别人(不知道是谁)也会使用,思考一下他们的使用方式,在特定的情况下抛出错误。

    PS:这点很多如jQuery的类库处理的非常好,很值得学习。

     

  • 相关阅读:
    【转】PostgreSQL表膨胀的前世今生
    【转】SparkSQL sql解析
    【转】Spark SQL初体验之解析过程详解
    DCSync攻击
    ADCS relay攻击(失败)
    关于租房
    使用Nero Burning ROM 2021 刻录数据到光盘
    驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
    一起游APP介绍
    一起游
  • 原文地址:https://www.cnblogs.com/xhy-steve/p/5141649.html
Copyright © 2020-2023  润新知