※ 引述《iPhoto (iPhoto)》之銘言:
: 我是新人 工作不到三個月 在一家網路業寫php
: [中略]
: 原因都歸咎於 粗心
: [中略]
: 連這種小細節都做不好以後怎寫大架構的code呢 QQ
我是個不新人,焊板子一年寫 Java 五年,現在在一家網路業寫 PHP 寫了一年
我非常的粗心,code 寫一寫結果有語法錯誤還想推出去是常有的事情
其他邏輯上的問題就更不用說了,變數名稱打或把測試 code 留在程式裡面是常有的
而所幸我在一間讓我能夠學習成長的公司
我學到一件很重要,能大幅提升 code 品質,但是會稍微讓心靈變的扭曲的事情
- 要歇斯底里地認為眼前所有東西都有可能會犯錯
對於寫 Code 的部分,這概念有個很帥的洋文名字叫做 Defensive Programing
例如說一些常被提到的「基礎」做法
- 別人呼叫自己寫的函數可能會傳入奇怪的東西,所以輸入變數一定要檢查形態
(這對PHP這種變數形態整個混亂的語言尤其重要)
- 使用者輸入可能被塞入奇怪的東西,所以一定要做好 filter 或 escape
背後的思想都是這種讓人覺得病態但讓程式變得健康的歇斯底里...
然後 code 寫完了,準備要推出去了,這時候我開始歇斯底里地覺得自己一定會
寫爛什麼東西,所以
- 要檢查程式語法有沒有問題
- 要檢查程式邏輯有沒有問題
- 要思考萬一這邊上線之後出了問題會是什麼問題,然後去檢查那些東西
首先就是肉眼檢查,看邏輯有沒有問題,看跨號引號有沒有加
在測試環境測看看有沒有問題
不過當然,我不相信我靠自己就能檢查出問題,所以我需要工具幫助
例如最基本的, PHP 檔案推出去之前要用 php -l 檢查語法是否正確
進階一點的,程式要過自動測試程式,這邊上面推文有大概提到
不過如果是 PHP 網頁,一開始又沒有考慮 unit test,要能做到大概是得整套重寫...
(沒辦法,PHP 如果醜起來真的是很醜,很醜,很醜...[回音])
講到這邊我就得提到 git,git 這對大多數人來說只(?)是版本控制系統
但對我來說,是我歇斯底里防治的其中一環
首先不管要推什麼 code 我都會在 git add 之後再做一次 git diff