Burk Hufnagel

離開鍵盤,答案自然浮現#

你已經花了好幾個小時專注在某個棘手的問題上,卻怎麼也找不到解法。於是你起身去走走、買杯飲料,回來的路上答案突然就浮現了。

這個場景是不是很熟悉?為什麼會這樣?原因在於:當你在寫程式時,大腦的邏輯面正在活躍運作,而創造面被擠壓了出去。創造面無法在邏輯面運作時傳達訊息給你——直到邏輯面休息下來。

一個真實的例子#

作者在清理一段 legacy code 時,遇到一個驗證時間字串格式(hh:mm:ss xx)的方法。原始程式碼用了超過 30 行,透過逐一擷取子字串、解析整數、檢查範圍的方式來驗證時、分、秒以及 AM/PM。

這段程式碼冗長且難以閱讀。作者重構了它、寫了單元測試確認功能正確,得到一個較精簡的版本。但第二天離開電腦時,一個念頭閃過腦海:為什麼不用正則表達式?

結果只需要一行程式碼就完成了:

public static boolean validateTime(String time) {
    return time.matches("(0[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9] ([AP]M)");
}

關鍵啟示#

重點不在於最終用一行程式碼取代了 30 多行,而是在於——直到離開電腦,作者才意識到第一個方案並不是最佳解法

所以下次遇到棘手問題時,請善待自己:真正理解問題後,去做一些能啟動大腦創造面的事——畫張草圖、聽聽音樂,或只是出去走走。有時候解決問題最好的方式,就是放下滑鼠、離開鍵盤