DEV Community

Neil
Neil

Posted on

[How-To] [1/4] 如何不用想破頭就能解決寫程式時思緒卡住的問題?

Image description

今天我想來講解如何解決寫程式時卡住,不知該怎麼下手的問題,特別是一打開編輯器就只能盯著螢幕發呆的情況。

在我寫程式的整個過程中,會一直重覆的在這三個階段循環切換:規劃 (planning)、實作 (writing)和優化 (refactoring)。本次介紹的內容是屬於「規劃」裡頭的「流程/架構」部分。

許多程式新手往往不知道該怎麼製訂一個程式的流程和架構,就乾脆跳過這一階段直接進入實作部分(以前的我也是⋯⋯)。因為沒有先訂好目標,不知道自己正在往哪個方向前進,因此走錯路了也沒有察覺。

你可能會上網看看有沒有人寫過類似的程式,胡亂的把幾十行的程式碼複製貼上到原始檔內,看看是否能得到正確的結果,但總是失望而歸。花了大把的時間卻遲遲沒有走到終點,這也難怪你會覺得自己卡住了!

你會說『可是我沒學過怎麼畫流程圖』,或是『我不知道要怎麼畫架構圖』。沒關係!你可以在你整個學習的路上循序漸進的獲取那些技能。今天要介紹的是用純文字的方式來作流程的規劃。

讓我來說明第一個步驟——【定義「最初的輸入」和「最終的輸出」】。這會讓你在整個寫程式的過程中較容易保持在有意識的狀態。

許多時候當我們接到一個案子時,它的原始資料和預期結果仍是在很早期、很模糊的階段。往往客戶或主管都還不是那麼的清楚它們的範圍和內容,就想要你趕快上工寫程式。如果你真的開始埋頭苦幹下去寫,那麼大幅度的程式修改就是可預期的結果了。

所以第一個步驟就是要先釐清需求的正確內容,和客戶/主管/同事來回地討論哪些資料是屬於「輸入」的內容,它是一份檔案、還是兩份或多份?是由使用者輸入嗎?它的格式是什麼?有沒有哪些可調整的行為是可以寫入設定檔 (config file) 的?

同樣的「輸出」也是需要搞清楚的重點。它是一份還是多份檔案?格式是什麼?需要寫入資料庫嗎?有沒有現成的檔案是需要更新其內容的?要怎麼呈現給使用者看?

清楚定義好輸入和輸出的例子就像是販賣機,你只要投入硬幣就可以得到飲料,小孩子都懂。定義不明的例子就像是恐怖箱或福袋,期望愈大失望也就愈大。

不過有時因為公司文化或時程壓力,你不一定可以在最初就敲定輸入和輸出的最終版本,這時你就要採取折衷的方式,按時間推移先定出「中介版本1」、「中介版本2」⋯⋯。在我工作的經驗中,客戶或主管訂的死線 (deadline)其實是給你看的,他們心中真正的死線是在別的日子,往往是保有緩衝空間的。只要他們能看到進度有向前推進,他們就可以不那麼焦慮,不會照三餐來逼問你做到哪裡和什麼時候可以完成的問題了!

因篇幅有限,今天只先介紹第一步。如果你很期待後續步驟,請敲碗(或卡),我會儘快寫出下一篇!

如果你覺得這一步可以解決你寫程式卡住的問題,也歡迎在下方留言分享你的經驗和想法!

Top comments (0)