【從學員練習影片觀察到一個關於 TDD 的有趣現象】
極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的)
我從2位第一次上我課的學員(當然就是 #極速開發,代表他們沒上過#單元測試 跟 #TDD與持續重構),雖然他們是照著示範影片、上課教學用 TDD 在寫整個 tennis 的過程,但從他們執行測試的時間點就可以發現:
「他是用測試來驗證 production code 的正確性」,即使他先寫了測試,也不先執行,沒有看到紅燈,每次都等到 production code 寫完了,應該要綠燈時,才執行測試。
而其他上過 TDD 課的同學 ,或是上過單元測試的同學,知道測試是用來描述情境,如果現在「加入的這個情境是新的需求或需求異動,代表目前 production code 還不支援這個情境,執行測試跑出的紅燈,就是等等 production code 要完成的 #目標」
test-frist 從來都只是 TDD 其中一個小小的衍生產物,而不是全貌。TDD, 測試驅動開發 從來都是一種開發方法,而不是測試方法。
總有些人老愛把 TDD 拿來跟測試相提並論,就總是喜歡把 test-first 當作靶子打,覺得違反人性跟直覺,覺得先寫測試在很多情況下是浪費時間或是不 work,可能拿來跟一堆測試的方法論相提並論,或總是只拿回歸測試的效益來當作 TDD 的整體。抑或是陷入 isolation unit test 與 integration test (其實就是非 isolation 等級、有實際依賴的自動測試)之爭。
```
註:TDD 事實上是可以不是單元測試等級的。
```
要比較正確看待 TDD 的角度,首先要知道它是幫助開發的、它是一種開發方式(當然不是唯一一種,甚至也不會是最好的一種,因為根本沒有最好,只有剛好)
接著要了解 TDD 可能用 IPO 模型還比較貼切,input-process-output,在你開發任何功能之前,你總要先想過這件事。而先想這件事,才是 TDD 的最基本精神。
接著是怎麼把你想好的東西,變成可執行的 spec,我們只是用測試程式來「描述」你腦袋中的「IPO模型」,把 process 的過程當作一個黑箱子。
而這個 IPO 模型在結合成「使用情境」,就會帶來「高易用性 API 的好處」,只有在一開始就先想好怎麼給別人用,最後才會好用。所謂的一開始想好,指的不是預先設計一堆 class,而是 input/output 想清楚期待(一般會結合實例化需求,搭配 Given/When/Then 的 gherkin style 來把前置條件、資料、前提想好,當發生什麼事,應該是怎樣的結果),然後描述它。在紅燈定義清楚目標,綠燈完成 input/output 關係且沒弄壞前面的所有情境後,來針對 process 進行重構(事實上 Kent Beck 的 TDD by Example 更多是用 refactor 來 #完成 process。
```
註:所謂的 output 不一定只有回傳值,包含外部依賴狀態、資料的改變,甚至顆粒度小一點,針對物件導向設計的話,物件內部狀態的改變也算,只是物件內部狀態改變,驗證點要嘛是拿得到內部狀態,要嘛就是要驗證物件哪個行為會因這個內部狀態而有所不同。
```
## 戰 TDD 之前該先做好的功課
要戰 TDD,是不是至少要把 Kent Beck 的 TDD by Example 看完?
要戰 TDD,請不要拿它跟測試方法論來比,那只是一下就被人看破手腳。因為它是個開發方法論。
要戰 TDD,請不要把它的好處只限縮在跟回歸測試、自動測試的比較,因為那只是它的衍生好處,當你試過在白海報紙上 TDD 就懂,TDD 是在釐清你的思緒的同時,又可以以終為始,確保你在 production code 的每一個動作都是為了滿足某個期待的情境。
要戰 TDD,請不要去把 單元測試、整合測試捲進來,那是測試的顆粒度,那是測試的分類,TDD 從來都不是只能限於單元測試。
要戰 TDD,請不要在那邊戰他是 bottom-up ,是直接從程式/class 的角度出發,事實上 TDD 既不是 bottom-up, 也不是 top-down, (書裡面就有講這件事咩),實務上的 TDD 結合倫敦派(GOOS)跟芝加哥派(Classic TDD),會更像 Outside-In 的進行方式,先定義好驗收情境,接著從最外部(也就是使用者看得到的部份)一路把依賴往另一邊的系統邊界推,直到推到系統以外的依賴資源(persistence 或 external API/service)
```
註: ATDD by Example 中 ATDD by Example, Kent Beck 寫的序最後的一段話。
Kent Beck:
「就像我曾說過的,TDD的一個缺點是,它可能會退化為一種用來滿足開發人員需求的編程技能。某些開發人員從更廣泛的角度來看待TDD,輕易在他們測試的不同抽象級別間跳躍。然而在ATDD中不存在歧義,這是一種加強與非編程人員溝通的技術。我們之間良好的協作關係,以及作為這種關係基礎的溝通,能夠使軟件開發更有效率。採用ATDD是向著溝通更清晰這個目標邁進的重要一步,而此書是一本全面又平易近人的入門讀物。」
```
要戰 TDD,請不要只關注在 test-frist,因為他只是用 test 來幫助你 think-first,不要邊寫邊想。然後不要過份依賴或相信你腦袋的能力,把你想好的東西具體化出來,最好可以被直接執行,最好除了你以外每個人執行出來的結果都會一樣(不管是對的,還是錯的)
要戰 TDD, 請不要把論點放在見樹不見林,如果你有看 TDD by Example 的 Part 1, Part 2 那兩個加起來共 24 個章節,就知道一開始就得把當下想到的全貌紀錄在一個「紙本」的 backlog (所謂的紙本,只是要講這並不依賴於任何工具)
而這個需求輪廓的全貌,會隨著你逐漸完成一部分一部分的情境,設計逐漸浮現後,而隨時跟著增減調整。
但不代表 TDD 就是先想到一個測試案例,就直接先幹下去了,那根本是亂搞。
以上這些,都還不是在列 TDD 的好處,而是針對那些從來沒搞懂 TDD 但又愛戰 TDD 的人一點提醒,你戰的很可能是「你誤解的 TDD」。
TDD 還有許多實務上的用途,列上我在譯者序中的一小段:
>> 測試驅動開發(Test-Driven Development, TDD)!一種以測試為開發輔助、以測試來描述需求情境、以測試來當作目標、以測試來表達期望、以測試來驗證疑問、以測試來實驗學習、以測試來溝通協作、以測試來協助設計高易用性 API 的「開發方法」。
譯者序有開放給大家看,請見:https://tdd.best/book/tdd-by-example/
拜託,要戰之前去看一下祖師爺 Kent Beck 對 TDD 的原始見解:https://www.tenlong.com.tw/products/9789864345618?list_name=srh
如果你想正確的使用 TDD 來幫助你在實務上產生許多的價值,帶來許多的好處,尤其是需求釐清、持續重構、小步快跑的部份,最好理解的培訓課就在這:https://tdd.best/courses/classic-tdd-by-example-video-training/
最後我想講一段話:
TDD 從來都不該被導入到團隊中,但它是一種很好的自我鍛鍊與學習的方式,也是一種能用很低的成本來帶來很多好處的開發方法(見下方註腳),然而它也不是適用所有的情況,但它可以讓『完美』變成一個動詞,而非不變的形容詞。
```
註:
Kent Beck 在 DHH 靠腰:《TDD is Dead》 之後寫的一篇反串文:《RIP TDD》
https://www.facebook.com/notes/1063422864115918/
我幾年前的簡易翻譯,通常也是 TDD 可以幫助你解決的問題,如下:
- Over-engineering (過度設計)
- API feedback (改善API的設計與可用性)
- Logic errors (想的跟寫的不一樣,寫的跟需求不一樣)
- Documentation (寫跟維護文件是痛苦的)
- Feeling overwhelmed (找不到切入點)
- Separate interface from implementation thinking (抽象設計)
- Agreement (確保已修正問題的證據)
- Anxiety (改東壞西的擔心受怕)
```
很久沒對 TDD 發表這種長篇大論了,因為不理解、不想理解、不同角度理解的人居多,能真的到各自的塔上用不同角度來看原義,以及實務上用它來幫助解決的問題有哪些的人,真的太少。
大部分人只想針對這個詞彙來攻訐以博得流量跟吸引目光,而不是想著「我可以用它來幫助我什麼」
問題跟需求是中性的,解決問題跟滿足需求的手段與方式有千萬種,不會只有一種,也不會有所謂的對錯,多點角度去了解不同的方法、方式,然後融會貫通,發揮綜效,在實務上用最少的成本與風險來產生最大的價值,這才是真正的目標。
導入敏捷不該是目標,導入 TDD 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有36部Youtube影片,追蹤數超過19萬的網紅分享家-羽,也在其Youtube影片中提到,有些人會在手機上的LINE刪除訊息中的幾句話,但是到電腦版打開那幾句話卻依然存在,到底手機版跟電腦版的LINE它在同步跟儲存的邏輯是怎樣?另外一方面,電腦版的LINE該如何匯出聊天記錄,匯出時又該注意些什麼呢? 其他推薦相關影片: ✅手機空間不夠用嗎?一招釋放Line佔用的大量暫存空間,暫時解決你...
文件分類技巧 在 Facebook 的最佳貼文
小孩書包很重的原因,通常是他們不會整理書包!
我這兩天在拿小孩的書包時,實在快看不下去,秤一秤竟然超過8公斤。其實書包的重量不可以超過孩子體重的1/8,不然身體姿勢會有所改變,可能發生脊椎側彎的危機。這個的嚴重性,我跟好朋友 加拿大脊醫黃如玉 - Dr. Joyce, DC MPH ,之前在上節目時就有跟大家提醒過。
但是,你知道孩子的書包為何都很重嗎?一方面是小孩的書包很容易很亂,他們就開始用塞的;另一方面是孩子會把所有要用及不用的東西,通通都放到書包裡。簡單的說,就是不知道怎麼整理書包。
► 超實用書包整理收納術:https://pros.is/3m5x3q
有6個簡單的小技巧,可以讓孩子的書包同時變得不亂又變輕:
1、「每週一倒」:把要用的及不用的東西,每週都全部拿出來
可以固定每週日下午為書包整理日,因為週日下午往往也該收心準備明天要上學的東西了。而且這個時間點,倘若突然發現明天要上學的物品有欠缺,也都還來得及去買。
2、「1/2篩選法」:分為需要與不需要
當東西很多時,建議教孩子先用二分法分類,只分「需要」和「不需要」兩類,「不需要」指的是垃圾、不再需要的物品(如發還的作品),或已經不適用的物品(如太短的鉛筆)等。
3、「斷捨離原則」:將不需要物品處理掉
所謂斷捨離,指的是「斷」絕不需要的物品、「捨」去多餘的物品、脫「離」對物品的執著。依此原則處理「不需要」的物品,直接丟棄或回收,倘若想留念可用拍照紀念,就能減少收納的空間。
4、「依需求分類」:將物品依需求分類
處理完「不需要」後,接下來就是處理「需要」。「需要」的物品可再進一步分類,大致分為五類:明天要用的課本作業類、文具用品類、明天不需要用到的物品類、備用品類(如口罩、雨具、衛生紙等),以及小禮物類(如同學或老師給的小文具)。
5、「夾鏈袋工具」:利用文件夾或夾鏈袋
要教導孩子善用資料夾或夾鏈收納袋,將單張紙或小東西分別放置,並可在外面貼上標籤,方便辨識。
6、「分配收納位置」:讓物品有固定的家
當都分類好後,接下來就是安排這些物品在書包中的位置,安排時務必考量拿取的方便性,安排好後就別再輕易更動,這樣孩子也比較容易記住東西放哪裡,養成物歸原位的習慣。
孩子不太會整理書包,大人可以先教他們收納小技巧。有沒有發現,孩子的書包裡真的什麼都可以挖出來😂
文件分類技巧 在 享生活-打造無印之家 Facebook 的最佳解答
《第九期-實用有效的整理入門課程》
~讓你的家改變成你想要的樣子~
#微調整 #更實用 #更容易上手
將原本的21天整理入門課程 ,
調整為六週共30個單元,
上課方式、內容及主軸皆相同,
想更快了解重點的直接看圖片說明喔!
#看看參加過的學員怎麼說
想要整理的心情已經累積許久,
記得在第六期之前就曾經詢問老師課程,
但最後還是沒參加,反而問老師到府!
不過內心深處有點遺憾。
第七期時毅然下定決心想要好好學習,
然後也打造自己的無印之家。
我有很多整理書也看了老師好多的文章,
但真的上課後老師好多的當頭棒喝,
還有同學們的討論,讓我覺得也太神了吧!
當每天看到自己的客廳餐廳廚房都能淨空好感動,
也覺得好療癒!
真的好值得參加的課,
而且會覺得這錢花的好值得。
~by 牙牙~
謝謝敏恩老師,讓我實現,
我以為這輩子根本無法做不到的事。
那就是,
擁有自信和積極前進的動力,
一步一步還原我美好舒適的空間。
如果,你也和我一樣,
意識到家裡很雜亂,且有心想動手整理。
但苦於不知方法、卡關原因或不知盲點為何?
那麼,只要你願意,
跟著專業的敏恩老師,
改變現狀,就是現在。
~by小歐~
<分隔線以下為課程說明>
———————————————————————
❤️❤️2021 / 09/16開課,現正報名中,
此課程為線上課程,
包含課程、教學影片、貼文,
#皆可重複無限期觀看。
🔹進行方式
✔️整理入門課程:4小時
✔️每日短片解說示範整理技巧:
每日影片約15分鐘,共30天,
簡單有效的方法,適合任何狀況的家。
✔️實作內容:搭配「每日整理技巧」短片,
輔以更清楚明瞭的文字敘述。
✔4次️個別諮詢:每次約30分鐘,
對於學員的個別問題,提出解決的方案。
🔹適合對象:
•#願意一天花至少1小時,
或每週花4-6小時整理,且連續持續六週者。
•希望學習簡單有效又有系統的整理方式。
•喜歡無印風,想知道如何善用無印收納用品。
•願意適當程度的篩選捨棄物品者。
•上過我的其他課程,想持續精進者,
#此課程與以前課程皆無重複,
舊生也享九折優惠喔!

✅週末沒有整理進度,可自行安排要每天1小時,
或是集合一週4-6小時一口氣整理,
#所有影片和貼文皆不限期可重複觀看。
🔹學費:
•包含4小時課程、講義、
30個單元的整理技巧短片、
4次個別諮詢。
✅總計$4200,每天花100元,
每天整理1小時,
用6週讓家裡告別雜亂。
#早鳥優惠9折,7/25前報名只要$3780,
#再贈送「單堂課程」乙次
🔹#意者請私訊,名額有限,敬請把握。
✳️詳細內容:
#先上精華課程4小時
課程[第一章]:整理入門
•了解自己整理的程度
•人、物品、空間的關係
•無法整理的原因
•整理的好處
課程[第二章]:整理的五大原則
•從留白開始—平面淨空的重要
•嚴選—如何篩選取捨物品
•定量—幫物品定量與分類
•藏拙—思考使用動線和頻率來收納物品。
•保持留白—讓家裡維持清爽不複亂。
[第一週]玄關客廳實作
單元1.家的診斷書
單元2.玄關區物品《整理篇》
單元3.玄關區物品《收納篇》
單元4.各種常見小物的整理收納
單元5.客廳物品的整理收納《上集》
單元6.客廳物品的整理收納《下集》
[第二週]衣物整理與收納
單元7. 衣物整理《上集》
單元8.衣物整理《中集》
單元9.衣物整理《下集》
單元10.衣物收納與其他家人衣物篇
單元11.飾品配件的整理收納
[第三週]各臥室整理收納
單元12.臥室整理收納《大型物品篇》
單元13.臥室整理收納《小型物品篇》
單元14.臥室整理收納《兒童物品及玩具篇》
單元15.儲藏室或陽台整理收納
[第四週]廚房+衛浴空間實作
單元16.廚房的整理收納《用具篇》
單元17.廚房的整理收納《容器篇》
單元18.廚房的整理收納《電器篇》
單元19.廚房的整理收納《食材篇》
單元20.廚房的整理收納《冰箱篇》
單元21.衛浴與洗衣空間的整理收納
[第五週]書籍、文件、作品整理收納
單元22.書籍的嚴選、定量與收納
單元23. 文件的嚴選、定量與收納
單元24. 文具的嚴選、定量與收納
單元25. 作品的嚴選、定量與收納
單元26. 相片的嚴選、定量與收納
[第六週]紀念品及其他物品整理收納
單元27. 紀念品、裝飾品的
嚴選、定量與收納
單元.28.其他物品的整理建議
單元29.整理後的維持
單元30.成果分享
#享生活打造無印之家
#初階整理課程
#實用有效的整理入門課程
文件分類技巧 在 分享家-羽 Youtube 的精選貼文
有些人會在手機上的LINE刪除訊息中的幾句話,但是到電腦版打開那幾句話卻依然存在,到底手機版跟電腦版的LINE它在同步跟儲存的邏輯是怎樣?另外一方面,電腦版的LINE該如何匯出聊天記錄,匯出時又該注意些什麼呢?
其他推薦相關影片:
✅手機空間不夠用嗎?一招釋放Line佔用的大量暫存空間,暫時解決你手機的空間問題!(Android為例)
https://youtu.be/C2tGwnSwzeg
✅Line實用小技巧-匿名截圖安卓版:終於截圖後不用再開畫筆一個一個塗掉了!(Android7以上適用)
https://youtu.be/08qPxYZx6I0
✅Line使用小技巧│只有自己一個人的群組超方便│建立方式、跨平台傳輸、記錄想法備忘、記錄超連結與照片影片
https://youtu.be/f9cpYmcfG2A
✅Line聊天紀錄終於可以自動備份了!貼圖也多了情緒分類可以選喔!
https://youtu.be/TOueQeaUNIs
✅多一個動作讓Line傳出去的照片畫質更好!分享Line傳照片三種畫質的設定方式!
https://youtu.be/hfH0-4DjaKo
✅Line的對話紀錄要怎麼一次全部備份起來?單一聯絡人的對話紀錄怎麼匯出成能在電腦上開啟的文件檔?
https://youtu.be/HHft8itqRGY
👉訂閱分享家-羽的頻道 https://tinyurl.com/subshareryu
👉前往分享家-羽的副頻道【日常廢片】https://tinyurl.com/yulenvlog
👉前往分享家-羽的粉專 https://www.facebook.com/HappySharerYu/
======================================================
其他分享家-羽的影片系列:
💡知識技巧系列
分享3C或生活中實用的知識、技巧與經驗。
https://tinyurl.com/sg3w25o
🔎開箱評測與使用心得系列
分享各種商品的開箱、評測以及使用心得等影片。
https://tinyurl.com/tqjpv75
🚗旅遊與食記系列
分享旅遊或食記相關Vlog以及旅遊相關的知識、技巧或資訊等等。
https://tinyurl.com/rtpc4a3
📢就是要分享系列
分享我覺得有價值但又不知道如何歸類的影片。
https://tinyurl.com/rp3h47r
🏨羽的住宿經驗系列
分享各種自己住過的飯店、旅社、民宿等等。
https://tinyurl.com/uto3ngh
📜全部播放清單列表
其他沒有列出來的清單都在這邊!
https://tinyurl.com/s8rmtk8
======================================================
✉合作邀約請洽粉專或來信 singiamagic@gmail.com
#LINE #電腦版 #聊天記錄
文件分類技巧 在 吳老師教學部落格 Youtube 的精選貼文
TQC JavaScipt 線上影音教學課程
教學網:http://3cc.cc/10g
考場:http://www.10g.com.tw
可以讓您學習到JavaScipt 的技巧,並可學習JAVA語法。
第一類 JavaScipt 基本物件
101自動瀏覽器
102 顯示文件物件的屬性
103Link與樣式表應用
104瀏覽器資訊
105樹狀分類表
106縮放圖片
107頁框物件應用
108中英文網頁模式切換
109開啟新視窗
110滑鼠按鍵測試
第二類 動態網頁與網頁特效
201左側拉動式選單
202 利用按鈕來改變視窗位置
203圖片捲動控制
204新詩欣賞
205課程列表
206晝夜變換
207樹狀選單
208視窗效果
209滑鼠游標效果
210每日一句
第三類 互動式網頁
301英文單字填充
302 利用按鍵開啟網頁
303背景音樂與圖片
304通用運算式
305滑鼠與鍵盤動作偵測
306橫幅廣告輪播器
307問侯語
308限制表單輸入資料
309會員登入與訪客計數
310身份證字號認證
第四類 網頁應用程式
401雨量統計圖表
402日期計算
403數字猜猜猜
404測驗反射神經
405進位轉換器
406抓球遊戲
407模擬樂透彩
408閏年判斷
409簡單的搬圖遊戲
410猜拳遊戲
感謝訂閱吳老師的教學影音頻道
1.教學網站
http://3cc.cc/10g
http://homepage19.seed.net.tw/web@1/t10g/
2.影音網站
http://www.youtube.com/user/terry28853669
3.部落格
1.http://terry55wu.blogspot.com/
2.http://terry55.spaces.live.com/
3.http://tw.myblog.yahoo.com/terry55.tw
4.考場頻道
http://www.youtube.com/user/My10g
5.丙級硬體裝修
http://homepage8.seed.net.tw/web@1/t10g/hardware/index.htm
6.丙級網頁設計
http://homepage3.seed.net.tw/web@3/terry55/TQC/FP_ClassC/index.htm
7.丙級軟體設計
http://homepage8.seed.net.tw/web@3/terry55/TQC/VB_ClassC/index.htm
8.乙級軟體應用
http://homepage19.seed.net.tw/web@1/t10g/TQC/App_ClassB/index.htm
9.TQC PHOTOSHOP CS3
http://homepage8.seed.net.tw/web@1/t10g/TQC/Photoshop/index.htm
10.TQC AUTOCAD 2D
http://homepage3.seed.net.tw/web@1/t10g/03%E5%BD%B1%E7%89%87%E6%95%99%E5%AD%B8.htm
11.TQC AUTOCAD 3D
http://homepage3.seed.net.tw/web@1/t10g/03%E5%BD%B1%E7%89%87%E6%95%99%E5%AD%B8.htm
12TQC CAD考試秘笈
http://homepage8.seed.net.tw/web@3/terry55/TQC/CAD2DHELP/index.htm
TQC JavaScipt 電腦證照 認證 程式語言 網頁設計 互動式程式設計師 吳老師 湜憶電腦
文件分類技巧 在 吳老師教學部落格 Youtube 的最佳貼文
TQC JavaScipt 線上影音教學課程
教學網:http://3cc.cc/10g
考場:http://www.10g.com.tw
可以讓您學習到JavaScipt 的技巧,並可學習JAVA語法。
第一類 JavaScipt 基本物件
101自動瀏覽器
102 顯示文件物件的屬性
103Link與樣式表應用
104瀏覽器資訊
105樹狀分類表
106縮放圖片
107頁框物件應用
108中英文網頁模式切換
109開啟新視窗
110滑鼠按鍵測試
第二類 動態網頁與網頁特效
201左側拉動式選單
202 利用按鈕來改變視窗位置
203圖片捲動控制
204新詩欣賞
205課程列表
206晝夜變換
207樹狀選單
208視窗效果
209滑鼠游標效果
210每日一句
第三類 互動式網頁
301英文單字填充
302 利用按鍵開啟網頁
303背景音樂與圖片
304通用運算式
305滑鼠與鍵盤動作偵測
306橫幅廣告輪播器
307問侯語
308限制表單輸入資料
309會員登入與訪客計數
310身份證字號認證
第四類 網頁應用程式
401雨量統計圖表
402日期計算
403數字猜猜猜
404測驗反射神經
405進位轉換器
406抓球遊戲
407模擬樂透彩
408閏年判斷
409簡單的搬圖遊戲
410猜拳遊戲
TQC JavaScipt 電腦證照 認證 程式語言 網頁設計 互動式程式設計師 吳老師 湜憶電腦
文件分類技巧 在 享生活-打造無印之家- 《整理收納技巧19》 ~文件、文具的 ... 的推薦與評價
文具用品是否散亂隨意放置? •筆多到數不清了吧?! 2.分類: •很久沒整理的書房(書桌), 有一半的物品都是垃圾。 •需要留下的文件: A.重要文件B.待辦文件... ... <看更多>