iT邦幫忙

0

[javascript]請問一下大家在幫專案加入套件的時候會再包一層自己的程式碼嗎?

tony 2020-10-30 15:15:542417 瀏覽
  • 分享至 

  • xImage

最近在寫專案的時候,因為有使用到D3.js,
之前學習到說這些程式碼都可以包裝起來,
以免他未來改版的時候程式碼在各個檔案所以不易更改。
但我一直不知道這個觀點是否正確

例如:當要幫一個D3物件增加屬性的時候,正常的寫法是這樣

d3.select('body')
  .append('svg')
  .attr('width', 100)
  .attr('height', 200)

我就會在這邊改寫成:

obj.AddAttr=(attr,o=obj)=>{
    for(const [k,v] of Object.entries(attr)){
        o.attr(k,v);
    };
    return o;
};

//實際應用的時候
d3.select('body')
  .append('svg')
  .AddAttr({
      'width':100,
      'height':200
  })

當然以上的程式碼並不是完整的,只是大概說個意象
想問問大家這個觀念是否正確
還是大家在使用套件的時候有其他方式來讓易維護性提高,謝謝!

Han iT邦研究生 1 級 ‧ 2020-10-30 15:54:04 檢舉
你這方式比較像,自已加擴充
我是有做過把套件包一層,實作幾個常用的功能

日後套件棄用,只要把包過的部分做抽換就好,剩下等其他大大分享XD
tony iT邦新手 5 級 ‧ 2020-10-30 16:42:44 檢舉
感謝分享
其實我就是單純疑惑這個方式到底好不好跟對未來有沒有幫助
五百億 iT邦新手 5 級 ‧ 2020-10-31 05:59:46 檢舉
我是覺得如果擔心未來更新會有問題,那倒不如不要更新就定下這個版本,這樣做現在若使用上有感覺方便,那就是有幫助拉,其實很直觀的阿,不用太擔心好不好,不好未來再改就好咩
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
HelloKayac
iT邦新手 4 級 ‧ 2020-10-31 17:07:31
最佳解答

這個應該是 Facade Pattern 的應用
這樣做的好處在
日後更換這個套件時
只需要修改wrapper
而不用改動程式邏輯

可見
https://en.wikipedia.org/wiki/Facade_pattern

tony iT邦新手 5 級 ‧ 2020-11-03 10:30:24 檢舉

感謝回覆
原來這是一種Design Pattern的應用
受教了!

我要發表回答

立即登入回答