iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
1
自我挑戰組

易讀程式之美學系列 第 23

分解巨大表示式--3

分解巨大的敘述

var update_highlight = function (message_num) {
     if ($("#vote_value" + message_num).html() === "Up") {
         $("#thumbs_up" + message_num).addclass("hightlighted");
         $("#thumbs_down" + message_num).removeClass("hightlighted");
         } else if ($("#vote_value" + message_num).html() === "Down") {
             $("#thumbs_up" + message_num).removeClass("hightlighted");
             $("#thumbs_down" + message_num).addclass("hightlighted");
         } else {
             $("#thumbs_up" + message_num).removeClass("hightighted");
             $("#thumbs_down" + message_num).removeClass("hightlighted");
         }
 };

由於其中許多敘述相同,可以將敘述抽取成為摘要變數,放在函數開頭(這是DRY原則應用-不要一再重複(Don't Repeat Yourself)):

 var update_highlight = function (message_num) {
     var thumbs_up = $("#thumbs_up" + message_num);
     var thumbs_down = $("#thumbs_down" + message_num);
     var vote_value = $("#vote_value" + message_num);
     var hi = "highlighted";
     
     if (vote_value === "Up"){
         thumbs_up.addclass(hi);
         thumbs_down.removeClass(hi);
     } else if (vote_value === "Down") {
         thumbs_up.removeClass(hi);
         thumbs_down.addclass(hi);
     } else {
         thumbs_up.removeClass(hi);
         thumbs_down.removeClass(hi);
     }
};

建立 var hi = "highlighted" 變數並非絕對必要,但重複出現了6次,有以下理由:

  • 避免打錯字。(有注意到第5個 highighted 打錯了嘛?)
  • 進一步縮解減行數,讓程式碼更好維護。
  • 萬一需要改變名稱,只需要改一個地方就行。

Reference

  • <<易讀程式之美學-提升程式碼可讀性的簡單法則 >>(The Art of Readable Code)

上一篇
分解巨大表示式--2
下一篇
變數與可讀性--1
系列文
易讀程式之美學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言