代码之家  ›  专栏  ›  技术社区  ›  james

如何干涸一些代码

  •  1
  • james  · 技术社区  · 7 年前

    <btn class="add_item" data-type="cart"></btn>
    <btn class="add_item" data-type="catalog"></btn>
    

    因为这些函数都是关于添加项目的,所以有很多重叠。然而,由于它们发生在不同的地方,因此也存在一些差异。对于哪些代码格式遵循标准原则(如SRP、DRY等),是否有约定?

    我特别想问一个公约,因为我想写更多的“标准”代码。FWIW,从历史上看,我一直在做选项B,我觉得这最终会引导我走上非常非常长的函数的道路,带有嵌套的if/then,这让人困惑。

    选项A

    $(".add_item[data-type='cart']").click(function() {
      doSomethingUniqueToCart();
      doSomethingSharedToAdd();
    })
    
    $(".add_item[data-type='catalog']").click(function() {
      doSomethingUniqueToCatalog();
      doSomethingSharedToAdd();
    })
    

    $(".add_item").click(function() {
      if ($(this).data("type") == "cart") {
        doSomethingUniqueToCart();
      } else {
        doSomethingUniqueToCatalog();
      }
      doSomethingSharedToAdd();
    })
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   huydq5000    7 年前

    var functionList = {
    "cart":doSomethingUniqueToCart,
    "catalog":doSomethingUniqueToCatalog
    }
    $(".add_item").click(function() {
      functionList[$(this).data("type")]();
      doSomethingSharedToAdd();
    });
    
        2
  •  0
  •   merv    7 年前

    通常,附加特定侦听器比附加一般侦听器更有效,并且必须查询信息以区分案例。我可能会这样做,

    $(".add_item[data-type='cart']").click(doSomethingUniqueToCart);
    $(".add_item[data-type='catalog']").click(doSomethingUniqueToCatalog);
    $(".add_item").click(doSomethingSharedToAdd);