Re: [請益] 新人常出包
※ 引述《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 --cached
重新檢查一次自己到底會推哪些 code 到版本控制裡面。尤其只列出「有修改的部分」
這點可以讓自己更容易看到自己可能犯錯的地方
(像是「啊幹那個 return true 是測試用的不能推出去」這種事對我來說常發生...)
然後是 git 可以設定各種 hook,所以我會在 pre-commit 裡面做檢查
例如 php -l 不過的 commit 就擋下來,不讓這個 commit 出去
不這樣做的話,我有十足的把握我會忘記跑自動測試...
不過「萬一這邊上線之後出了問題會是什麼問題」這就不見得是測試能夠幫你的了
你得對自家系統夠熟...經驗在這邊有幫助。
講到這邊會發現一個很有趣的事情,其實我作為寫程式的人,真的在「寫程式」
的時間很少,反而是做各種檢查的時間比較多
沒辦法,我又粗心又不是天才,為了品質犧牲一些生產力也是必然的
我能偷的懶就是在不影響檢查品質的狀況下,讓檢查儘量容易甚至自動化...
--
頂天立地:愛孩子就要支持蘿莉控
http://goo.gl/Bha7e
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.143.252.148
※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1408191096.A.68A.html
※ 編輯: GALINE (220.143.252.148), 08/16/2014 20:15:38
→
08/16 20:38, , 1F
08/16 20:38, 1F
→
08/16 20:39, , 2F
08/16 20:39, 2F
推
08/16 21:02, , 3F
08/16 21:02, 3F
→
08/16 21:24, , 4F
08/16 21:24, 4F
→
08/16 21:32, , 5F
08/16 21:32, 5F
→
08/16 21:34, , 6F
08/16 21:34, 6F
→
08/16 21:35, , 7F
08/16 21:35, 7F
我是想說自動測試終究不是三個月的新人能夠使的上太多力的東西...
而且 PHP 很容易弄髒到一個莫名其妙的境界
這種時候除了用 selenium 之類的東西做網頁功能測試以外拿他沒什麼辦法
連看懂都是一門藝術...
不知道他們家的 PHP 夠不夠乾淨,若不乾淨的話自動測試的建置成本不是新人能負擔的
要弄乾淨的成本也不會是新人能夠負擔的
只能從自己就能做的事情開始做了
※ 編輯: GALINE (114.27.57.63), 08/16/2014 22:51:40
推
08/16 23:30, , 8F
08/16 23:30, 8F
推
08/17 02:03, , 9F
08/17 02:03, 9F
推
08/17 09:09, , 10F
08/17 09:09, 10F
→
08/17 09:13, , 11F
08/17 09:13, 11F
→
08/17 09:15, , 12F
08/17 09:15, 12F
→
08/17 09:16, , 13F
08/17 09:16, 13F
推
08/17 15:18, , 14F
08/17 15:18, 14F
推
08/18 12:43, , 15F
08/18 12:43, 15F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章