iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
2

良好程式碼的優點大同小異。
不好的程式碼的糙點卻各有巧妙之處。

-- 普羅民遮城(赤崁樓)稜堡遺跡
1960年的赤崁樓整修,很遺憾地竟然把所有木構架的構造,全換為鋼筋混凝土,顏水龍在1944年的油漆彩繪,也被重做一遍。1
而這麼樣的一個荷蘭城堡擁有閩式建築也不是一開始就長這樣的。中法戰爭,法國會來打台灣,有個理由就是,台灣的台南有一座「西洋人的古城堡赤崁樓」,代表台灣在幾百年前是西洋人的領土。
所以當時的台灣人,為了不想讓西式城堡赤崁樓變成洋人打台灣的原因,於是先把赤崁樓的西洋城堡的洋人特色破壞掉;清法戰爭後,並在上面蓋兩座閩式的亭台樓閣。而台中霧峰的林朝棟也是捐錢建赤崁樓的仕紳之一。
林朝棟(林家)本來是台灣中部霧峰一帶發展,林朝棟晚年住在福建,原本跟台南是沒有關係的,但因為清法戰爭(有的書寫中法戰爭)之故,所以就捐錢給台南的赤崁樓建亭台樓閣。
所以嚴格說起來,赤崁樓早已改變了兩次建築風格型式。西式城堡與閩式木構造建築。現存已是水泥式的古蹟。

建構式

建構式,用在類別要建立物件時,執行物件的 property 與 config 之類的初始化行為。

是嘛~

來看看這一段古代文明

class SuBase {
  constructor() {
    this.mainService = new ServiceKernel()
  }

  // other methods
}

function SuBaseInitailize() {
  DatabaseConnecting(DB_CONNECTION_STRING);
  DatabaseConfigSqlLog(config_sql_log_path_file);

  SuBase rtn;
  rtn = new SuBase();
  return rtn;
}

class main {
  constructor() {
    this.isInial = true
    this.suBase = SuBaseInitailize()
    if (!this.suBase) {
      alert("Initialize error!", "Warning!")
      this.isInial = false;
    } else {
      if (!suBase.setSystemMessage()) {
        alert("Initialize error!", "Warning!")
        this.isInial = false;
      }
    }
  }

  // other methods
}

看得它的建構在建構什麼鬼東西嗎?

最後,改成這樣呢?
讓 Database 的初始,放在 ServiceKernel 裡。
檢查 Database 的初始狀況是否正常,不正常要反饋訊息

class main {
  constructor() {
    this.mainService = new ServiceKernel();
    if (!mainService.IsDataBaseInitialSuccess()) {
      console.log ("Initialize error!", "Warning!")
    }
  }
}

好好的把 code 用正確的語意寫出來,其實程式碼就可以簡單又明瞭。
難就難在,你不懂這個語法!!! (嗎?)

程式,不是只要會執行就可以湊出來。

湊出來的 code 只是會動,但是並不能表達你的意思。無法將意念傳達給另一個開發者,只能將語法給機器。

代表的是,你在寫 code 的過程,只想完成工作,不想與伙伴溝通。
如果不是這樣,請務必!務必收尾,務必重構,務必檢查你的語意是不是和語法咬合。

音樂的詞曲咬合,程式也要咬合

這種語法與語意的契合,如同音樂的「詞曲咬合」[2]裡,說話的聲調與樂譜的音調要合一。大概是唱歌如同說話,說話如何唱歌。(我不懂音樂,如果講錯的話,請務必更正,不過那種契合的藝術是我想表達的)

瑪莎:當詞曲不是同一個人創作的時候,歌詞與旋律的咬合精準度有時會被忽略。但即使是出道早期,李宗盛大哥並不太對我們的作品提出調整意見,畢竟每個時代都有自己的模樣,即使我現在聽新銳創作者的歌曲,也不會拿我所認知的「好歌詞」的標準套用,因為環境背景都不一樣了。既然音樂有它本身的自由程度,那對方所做的事情就不一定不正確。[3]

當軟體要解決的問題不同時,軟體的架構與語法也要調整。
當軟體專案很多人開發時,更要注意溝通的問題,並且讓咬合一致。

音樂並不是工程問題,軟體是創作,也是工程問題,所以有著相似的道理但是不同的問題。

參考資料

[2]: 音樂評論裡說的「詞曲咬合」是怎麼一回事? - 知乎
[3]: 【馬世芳X瑪莎】我們是這樣看中文歌詞的


上一篇
解決 if-else-if 太多的問題
下一篇
如何寫高品質 function (命名+參數篇)
系列文
可不可以不要寫糙 code30

尚未有邦友留言

立即登入留言