Re: [請益] 新人常出包

作者: GALINE (天真可愛CQD)   2014-08-16 20:11:30
※ 引述《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
作者: qrtt1 (有些事,有時候。。。)   2014-08-16 20:38:00
再多學學自動測試的方法,讓精神不要太緊繃。太緊繃會忽略掉一些該注意的週邊問題。目前的眼光太過焦中在避免錯誤了
作者: agreerga (鴨毛)   2014-08-16 21:02:00
TDD
作者: manlike ( )   2014-08-16 21:24:00
測試再多都沒用, 寫程式沒想到狀況, 寫測試會想到?能測試的很有限, 重點還是寫程式的素養~TDD 又是一個造神產物, 好像很厲害, 就像脫褲子放屁一般
作者: viper9709 (阿達)   2014-08-16 21:35:00
覺得很基本阿~並不算歇斯底里
作者: CRPKT (crpkt)   2014-08-16 23:30:00
推這篇, 省略檢查的風險會轉化成技術債, 之後還是要還
作者: aacs0130 (湛靈)   2014-08-17 02:03:00
推推,越寫越知道要注意什麼
作者: neversay (子不語)   2014-08-17 09:09:00
推這篇,正確的觀念,身為資深工程師必須是paranoid
作者: andymai (人生只有一次)   2014-08-17 09:13:00
有素養就代表不會有疏忽?測試程式要保證的就是在修修改改的情況下還"至少"能確定思考過的案例都是對的~而不是連沒想過的都想保證~沒想過的就算是有素養也不會考慮到啊...
作者: neo5277 (I am an agent of chaos)   2014-08-17 15:18:00
跟防衛性駕駛一樣 小心駛得萬年船
作者: laikyo (六元)   2014-08-18 12:43:00
有學有推

Links booklink

Contact Us: admin [ a t ] ucptt.com