[問卦] 寫程式要先寫測試碼?消失

看板Gossiping作者時間8年前 (2016/01/03 14:37), 編輯推噓19(19027)
留言46則, 24人參與, 最新討論串1/3 (看更多)
國外紅了一陣子的敏捷開發 還出書Clean Code 該流派認為要先寫測試碼 才寫程式內容 沒先寫測試程式就是Dirty Code Ruby on Rails創始人則是說這樣會破壞系統設計 實務上 追求效能的系統用這種物件一包再包的寫法真的效能很差 有多少人是真的先寫測試再寫本體的? 有沒有寫程式先寫測試碼的八卦? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.20.43 ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1451803020.A.EB4.html

01/03 14:38, , 1F
你說初音?
01/03 14:38, 1F

01/03 14:38, , 2F
蝦咪係測試碼
01/03 14:38, 2F

01/03 14:38, , 3F
老闆明天要
01/03 14:38, 3F

01/03 14:38, , 4F
我也想知道台灣真的有人這樣做嗎?
01/03 14:38, 4F

01/03 14:38, , 5F
安桌早就實現永遠的測試版 你說ㄋ
01/03 14:38, 5F

01/03 14:38, , 6F
要先證明寫出來的東西將會是"可測"的, 這很重要
01/03 14:38, 6F

01/03 14:39, , 7F
如果是"不可測" 那未來有bug也抓不出來了
01/03 14:39, 7F

01/03 14:39, , 8F
碼農只要知道怎樣能達到功能就好,管他怎麼寫
01/03 14:39, 8F

01/03 14:39, , 9F
先寫測試程式的用意就在這裡
01/03 14:39, 9F

01/03 14:40, , 10F
這種嘴砲有什麼意義
01/03 14:40, 10F

01/03 14:40, , 11F
OLG一直都這樣 都在公測 永遠沒有正式版
01/03 14:40, 11F

01/03 14:40, , 12F
hello world
01/03 14:40, 12F

01/03 14:42, , 13F
有寫就不錯了 還先寫勒
01/03 14:42, 13F

01/03 14:42, , 14F
重點是防呆不防白痴,永遠有你意想不到的意外發生
01/03 14:42, 14F

01/03 14:42, , 15F
TDD,都出來多久了...
01/03 14:42, 15F

01/03 14:42, , 16F
哪個程式沒有測試版 不就是測試碼嗎
01/03 14:42, 16F

01/03 14:43, , 17F
結果測試程式也寫了一堆bug
01/03 14:43, 17F

01/03 14:43, , 18F
用意大家都知道,只是實務上…?
01/03 14:43, 18F

01/03 14:43, , 19F
其實"測試版" 跟 "測試程式" 是完全兩件事....
01/03 14:43, 19F

01/03 14:44, , 20F
這是Test Driven, 很多地方這種方法是對的
01/03 14:44, 20F

01/03 14:44, , 21F
實務上, 沒人這樣幹~ XD
01/03 14:44, 21F

01/03 14:44, , 22F
比方說你正在寫一個UI要用的模組,但是還沒有UI
01/03 14:44, 22F

01/03 14:45, , 23F
那你需要先寫出測試碼,擬定輸出輸入,然後implement
01/03 14:45, 23F

01/03 14:45, , 24F
既然都要寫這東西,那還不如完善點把它寫成test case
01/03 14:45, 24F

01/03 14:45, , 25F
單元測試不是為了找 bugs,TDD 也不是為了減少 bug
01/03 14:45, 25F

01/03 14:45, , 26F
當然,很多其他地方這樣寫就變得很沒效率就是
01/03 14:45, 26F

01/03 14:45, , 27F
架構跟規格有定義清楚 可以測試就不需要先寫測試程式吧
01/03 14:45, 27F

01/03 14:46, , 28F
test test
01/03 14:46, 28F

01/03 14:46, , 29F
所以方法是看場合,不是TDD就一定對,還是就一定錯
01/03 14:46, 29F

01/03 14:47, , 30F
我覺得要先寫測試碼的測試碼 不然這個測試碼是dirty code
01/03 14:47, 30F

01/03 14:47, , 31F
以 TDD 的 "精神" 去開發程式,就能讓程式碼變漂亮
01/03 14:47, 31F

01/03 14:47, , 32F
倒是不一定要真的實現 TDD 開發流程
01/03 14:47, 32F

01/03 14:50, , 33F
對,有時候就是橫豎都得寫輸出輸入check,寫漂亮一點讓
01/03 14:50, 33F

01/03 14:50, , 34F
TDD跟Design Patten都很重要,想當優秀的程式設計師要學
01/03 14:50, 34F

01/03 14:50, , 35F
他變成正式的unit test code,這也是幫自己省工
01/03 14:50, 35F

01/03 14:51, , 36F
但如果已經有一個標準機器讓你輸出入,那就真的免了
01/03 14:51, 36F

01/03 14:53, , 37F
單元測試主要目的是防止未來程式被其他人(或三個月
01/03 14:53, 37F

01/03 14:53, , 38F
後的自己)改壞
01/03 14:53, 38F

01/03 14:54, , 39F
麻煩跟業務、PM講一聲,s時程抓寬一點再說…zZzZ
01/03 14:54, 39F

01/03 14:54, , 40F
未來的程式修改維護,最起碼要通過單元測試這個最低
01/03 14:54, 40F

01/03 14:55, , 41F
標準,才能上 push,但這只是最低標準,不保證沒問題
01/03 14:55, 41F

01/03 14:55, , 42F
就是了
01/03 14:55, 42F

01/03 14:56, , 43F
功能出來 Bug在說 沒台灣時間等你測
01/03 14:56, 43F

01/03 15:03, , 44F
順帶一提,TDD 是為了降低物件耦合度
01/03 15:03, 44F

01/03 15:14, , 45F
哪有這麼快寫
01/03 15:14, 45F

01/03 15:52, , 46F
理論上TDD開發比埋頭寫code還省時
01/03 15:52, 46F
文章代碼(AID): #1MYC6Cwq (Gossiping)
文章代碼(AID): #1MYC6Cwq (Gossiping)