修改前端代碼的方法

工作中,大部分情況,我們都面臨的不是重頭開發一套系統,而是在已有系統上做修改。
那問題就是有什麼好的思維方法去修改別人的代碼。
我總結一下經驗

  • 1.第一步讀懂別人的代碼,讀懂代碼後記得寫註釋 ,要形成一個好習慣。
  • 2.找到要修改的代碼後,在功能未聯調提測前,不要把別人的代碼刪除,最好只是註釋掉。方便你需要的時候來參考。因爲對於你刪除的代碼,可能隱藏了一些業務細節,而你沒有注意到。接手新系統,最難理解的是別人的業務。可能產品經理都換了幾批了,原有的業務細節隨着相關人員流失,已經沒有人知道了。所以要對老系統的原有代碼保持敬畏。一旦以Bug的形式出行時,方便你注意到那些細節
  • 3.添加代碼,把自己要寫的代碼封裝起來。可以簡單的是一個函數封裝起來,也可以是一個class封裝起來,也可以搞成一個文件模塊封裝起來。封裝的代碼好處很多。容易追責,可以很容易判斷是老代碼問題,還是你加的代碼問題。
    很多人增加功能修改別人的代碼時,更加喜歡的是在原有的函數裏寫代碼,定義全局變量,就像搞成語接龍,最後一頁的代碼 長達幾千行,閱讀性很差。

修改css的經驗
很多人要修改在某個已有樣式基礎上要覆蓋別人的樣式,都是加! important,加Id. 這是不是太簡單粗暴了。你這樣覆蓋後,後面的還如何覆蓋。
例如

   <div id='head'></div>  
  <style>
  #head{
    color:red;
   }
 </style>

如果要覆蓋color的樣式,很多人可能是加內聯樣式 來解決問題。其實這不是一個好主意。應該是改成

 <div id='head'></div>  
  <style>
  #head{
    color:red;
   }
 div#head{
 color:black;
   }
 </style>

這樣就可以覆蓋樣式了。這要求大家瞭解樣式權重的疊加規則。
現在簡單總結一下
1.本地內聯樣式(<stlye></style>)大於導入樣式(Link或@import)
2.樣式選擇符權重大小排序 !import>內聯>id>(class,屬性選擇符,僞類)>(標籤選擇器 ,僞元素)>通配類型的選擇器(*,結構選擇,前面一個 ,子類,後代,鄰居)
3.用戶設置>創作者>瀏覽器自帶樣式

一般我們要掌握2就夠了。另外記住權重是可以疊加的。

彩蛋一個

  • promise中finally的代碼在then或catch的回到執行完成後纔會執行。
  • 微信小程序中,
 initConfirmOrder(params) {
return request
  .Post(xxx, params)
  .then(({ errcode, data }) => {
    wx.hideLoading({
      complete: function() {
        console.log('complete 被執行');
        console.log('complete 被執行');
        console.log('complete 被執行');
        console.log('complete 被執行');
      },
    }); 
  })
  .finally(function() {
    console.log('測試代碼 finally被執行');
    console.log('測試代碼 finally被執行');
    console.log('測試代碼 finally被執行');
  });

}

這樣的代碼中 comlete裏回調代碼會在finally執行完成後才執行

原理我不太清晰,但是事實是這樣。這樣有時候可能產生一些你意料之外的Bug,請同胞們注意。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章