由「好程式」跟你想的不一樣!一文,我們改知道重構是「提升程式碼的可讀性,寫出容易修改擴充的好程式」的有效手段,接下來,你得先知道什麼叫壞程式,才寫出好程式。 Kent Beck 用「壞味道』(Bad Smell,中譯本把它翻成程式異味,但我偏好最早聽 Ruddy 老師採用的翻譯 - 壞味道)傳神地形...

從事程式開發超過二十年,我一直不是開發方法論的信徒,對於 TDD、重構、Pair Programming 這些僅止於概略輪廓,不曾深入。不過,寫了超過一萬小時,對於程式該怎麼寫才漂亮,多少也發展出自己的心法,例如:抽取成方法重複利用或共用、將函數結果存成變數重複利用減少呼叫... 等等。不記得是怎麼...

我從 onclick/onselect 寫 JavaScript 開始寫動態網頁,經歷了 jQuery 盛世,陸續學過 Knockout.js/AngularJS MVVM,還玩過一點 TypeScript;從來前端開發演進如火箭升天,但我當了中輟生,沒再跟隨前端潮流前進。當今主流的前端開發加入許多...

最近寫到內容維護 UI,想留下資料修改軌跡。除了保留修改前修改後的完整內容,我還想出一份簡單的差異報告,指出哪幾行有更改,增加了哪幾行、哪幾行被刪除... 等,方便一眼看出變更重點;甚至不必保留舊版,用最新版加差異報告便能一路反推完整修改歷程,大量節省儲存空間。思考這個需求時,我想到 Git dif...

產生文字檔或顯示純文字時會蠻常遇到類似:呈現多欄資料,文字靠左,數字靠右,每一欄寬度固定,字串長度不足時補空白至指定寬度。(例如下面這個例子) 分享我以前的笨寫法 - 自己寫一個輸出固定長度字串的函數,傳入字串(或數值)、欄位寬度並指定左靠或右靠,函數負責補足空白: class Program {...

看到一則新聞,提到那種有紅、黃、左轉箭頭、綠四枚燈號的紅綠燈,圓形綠燈亮但左轉箭頭綠燈沒亮時,只要對向沒有來車,是可以左轉的。默默搞錯多年,特將此發現分享到專頁,收到 Derek 與 Lane 令人意外的回響 - 不準,警察照樣會開單。 為一探究竟,爬文查到該新聞在PTT 八卦版的討論,網友的回應卻...

我是在翻譯如何選擇程式語言?海報時才認識 Python 這個程式語言。 在我心中它取代當年 BASIC 語言的角色,語法單純易上手,格外適合非資訊相關領域但想或需要寫程式的人學習,Python 因此在科學研究與學術領域十分受歡迎,應用廣泛。 自己有多年 C# 開發經驗,面對一般程式需求,不論命令列工...

分享這幾天寫程式學到的 System.Reflection 小技巧一枚:使用 Type.GetMethod() 於執行期間取得類別的靜態方法,方法包含選擇性參數。以強型別呼叫,選擇性參數可省略不寫,.NET 會帶入預設值;但透過 MethodInfo.Invoke() 呼叫時,object[] 參數...

同事遇到的案例,某台伺服器升級後,某支連接該主機網路磁碟機的固定排程出錯。手動測試以檔案總管無法連上伺服器,確認帳號密碼正確,但得到含糊的「An extended error has occurred./發生延伸錯誤。」訊息。再試了其他主機,使用相同帳號密碼連線網路磁碟並無問題。 改用net use...

分享 .NET 老鳥前陣子犯下的低級錯誤 - 字串比對結果與預想不同,還因觀念不清迷惑好一陣子(羞)。 故事是這樣的,先前知道 Dapper 查詢所傳回的 dynamic 底層型別是 DapperRow,並可轉型成 IDcitionary<string, object>方便動態指定欄位處...

前幾篇筆記提到 EF Core 主打 Code First 概念,講求先定義 Model 再自動產生資料表 Schema 的運作模式。 熟悉傳統資料庫程式開發方式的老鳥們看完猛搖頭:為什麼把事情搞到這麼複雜? 先定義 Schema 文件直接決定關聯建好資料庫,開發者照著規格寫程式不是比較簡單明瞭? ...

一個老掉牙問題 - 如何在 Batch 檔取得系統日期時間? 相關討論文很多,像保哥的這篇如何在 Batch 檔取得系統的日期、時間欄位 (第三版) 就介紹得有詳細,基本原理差不多是用 %date:~0,4% 從日期字串的第 0 個字元起取 4 個字元得到年... 等等。 不過,我在實測時遇上一個問...

掌上型計算機字跡不清,在強光下才能勉強看見液晶數字及操作: 依據經驗,這是內部鈕扣電池沒電,只靠太陽能電池供電的典型症狀。 拆開外殼取出 LR41 電池,以三用電錶測量電壓為 1.52 V (LR41 標準電壓為 1.5V),判斷更換沒多久,電力還很充足。 【冷知識】鈕扣電池型號 LR41 的第一...