Maintain legacy code

From LemonWiki共筆
Jump to navigation Jump to search

cases of legacy code[edit]

legacy: require_once, include_once

legacy: mysql_query, mysql_fetch_array

legacy: foreach

legacy: nested if-else

  • alternative: interface
(left blank intentionally)
legacy: 
* alternative:

避免的 coding 習慣[edit]

  • 避免使用簡化的的變數名稱,例如 $sd 或 $d 也許一開始還會記得,但是過一陣子就會忘記這是什麼
  • 重複複製貼上的內容,但是內容可能常被其他使用者更改,導致內容更新困難,需要修改多處的程式碼
  • 絕對路徑或絕對網址寫死在程式碼內,導致日後移機或對外公開網站服務時,需要修改多處的程式碼
    • 存取檔案時將完整路徑,例如 D:/AppServ/www/abc.csv 寫死在程式碼內。可以改成使用相對路徑,例如 __DIR__[1] 代表檔案所在的資料夾。
    • 將測試網址 (127.0.0.1 或 localhost) 寫死在程式碼內
  • 容易閱讀的錯誤訊息:除了 500 Error ,如果可以讓使用者自行處理,建議改成容易閱讀的錯誤訊息。
  • 「你那邊不能跑嗎?可是在我這邊跑起來是沒問題的。」通常問題出在開始者與程式執行的環境不同,需要檢查是否程式版本環境、相依套件版本。如果是網頁程式,則需要進一步檢查瀏覽器的快取與擴充套件是否衝突。
  • 「昨天下班前明明還好的啊,怎麼今天我沒有還沒動它就壞了,」使用 Docker 重新建立執行環境,進行測試。
  • 「程式一直找不到問題出在哪裡?」請搜尋單元測試。將複雜的資訊系統拆解成可測試的模組。
  • 「Bug 不知道問題原因在那裡,但是這一版改完就可以動了」請搜尋單元測試。


further reading[edit]