【從學員練習影片觀察到一個關於 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 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
同時也有32部Youtube影片,追蹤數超過1萬的網紅曼曼職能治療師的育兒紀錄,也在其Youtube影片中提到,🔎[圖文板] 與孩子讀唐詩5個學習步驟分享《與狗店長樂讀詩》:https://bit.ly/36Nxx9r 詩詞中有豐富的詞彙、精妙的形容詞,表達內心的想法與情感、對萬物變化的感應等。所以,孩子從小讀唐詩的好處有:豐富語彙量、增加語感、貼切運用語詞、增加識字量等語文能力。 小朋友很喜歡聽故...
「形容美的詞彙」的推薦目錄:
- 關於形容美的詞彙 在 91 敏捷開發之路 Facebook 的最佳解答
- 關於形容美的詞彙 在 Facebook 的精選貼文
- 關於形容美的詞彙 在 手寫澀群平台上線啦 Facebook 的最佳解答
- 關於形容美的詞彙 在 曼曼職能治療師的育兒紀錄 Youtube 的最讚貼文
- 關於形容美的詞彙 在 果籽 Youtube 的最讚貼文
- 關於形容美的詞彙 在 Kyrie J Youtube 的最讚貼文
- 關於形容美的詞彙 在 美麗話語 的評價
- 關於形容美的詞彙 在 形容很美的詞2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的評價
- 關於形容美的詞彙 在 形容很美的詞2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的評價
- 關於形容美的詞彙 在 形容美的詞彙的評價費用和推薦,YOUTUBE、EDU.TW ... 的評價
- 關於形容美的詞彙 在 周杰倫Jay Chou【最偉大的作品Greatest Works of Art】Official ... 的評價
形容美的詞彙 在 Facebook 的精選貼文
週日在家做啥好?當然是開箱拍照啊!
OO富翁一詞開始流行之後,
感覺這個俗氣又好理解的詞彙實在太適合我了。
像這一則貼文,就適合用「涼鞋富翁」來形容。是吧?
Hera那雙小牛皮拼接涼鞋,優雅美極。
草編底的Bali三色涼鞋,好穿又實用。
另外一雙沒人能拒絕的Athena黑色編織涼鞋,根本精品血統。
感謝Noahshoes在不能出國的現在,滿足我!
形容美的詞彙 在 手寫澀群平台上線啦 Facebook 的最佳解答
【你長的很善良耶】
筆:#筆yourself
跟抄:@snow__handwriting
—————————————————————
有些話
你都聽不出來
到底是不是在誇獎你
你的長相很善良
你看起來很會讀書
你應該很會生火吧
到底是褒義還是貶義啊
「善良」是個大家都很熟悉的詞彙
可是現實生活上
其實很不常真的拿來形容周遭的人吧
但是我還真的被說過
「你很善良」
看得到這裡
我知道你們很想滑掉
但是你忍一下,聽我講完故事吧
大學的時候
很常跟當時的室友
促膝長談
幹天幹地幹社會
從外太空聊到內子宮
兩個男人從吃完晚餐後
開始聊到隔天吃早餐
難免意識渙散
神智不清
不小心就會講一些很肉麻的話
我:「欸,我真的覺得你很貼心,如果你是女的,我好想現在就跟你求婚。那你覺得我有什麼優點」
室友眉頭漸漸皺了起來
想了很久
不知道是不是等待的時間特別難熬
我總覺得他想了有10分鐘
許久後,他好不容易吐出一句:
「你很善良」
雖然我更期待聽到
「聰明、睿智、酷似金城武」
但是,我的內心受到肯定
我也是可以接受的
正當我想給他一個擁抱時
他隨後補充:
「長相,你的長相很善良」
我收起了笑容
開始思考這句話到底是好還是壞
一直想到現在
你們有頭緒嗎?
—————————————————————
#dancingdancingsheep #handwriting
#手書 #手書き #美文字 #練字
#手寫 #手寫字 #手寫的溫度
#繁體字 #善良 #長相善良
#跟抄 #語錄 #跟抄語錄 #笑話
#幹話 #鋼筆 #鋼筆字 #萬年筆
形容美的詞彙 在 曼曼職能治療師的育兒紀錄 Youtube 的最讚貼文
🔎[圖文板] 與孩子讀唐詩5個學習步驟分享《與狗店長樂讀詩》:https://bit.ly/36Nxx9r
詩詞中有豐富的詞彙、精妙的形容詞,表達內心的想法與情感、對萬物變化的感應等。所以,孩子從小讀唐詩的好處有:豐富語彙量、增加語感、貼切運用語詞、增加識字量等語文能力。
小朋友很喜歡聽故事,所以我們可以透過故事的方式,來引發孩子讀詩的興趣,讓孩子們在聽故事的過程中,想像當時的情景、了解詩人想法或情緒,進而提升上述語文能力。
因此《與狗店長樂讀詩》系列繪本誕生了!讓孩子在大腦快速發展階段,透過共讀繪本故事,來朗誦優美詩句,灌溉孩子文字美感的養分,作為孩子的第一本古典詩詞啟蒙繪本。
#影片中寶皇4歲8個月 #兒童唐詩 #親子共讀
形容美的詞彙 在 果籽 Youtube 的最讚貼文
|真文青x偽文青 |90後文青帶70年代老詩人體驗大南街一日文青生活:當年文藝青年這詞彙是拿來嘲笑人
文藝青年,簡稱文青,這個詞彙現時可作形容詞或名詞,文青可以是咖啡店、可以是好去處、可以是穿搭。究竟甚麼是文青?以前與現在的文青又有沒有分別?我們找來一位七十年代的老文青,帶他逛現時文青聚集地大南街,體驗一日現代文青的生活。
「文藝青年,其實(七十年代)多數都是用來嘲笑人,意思是『你唔好咁文藝』,因為當時台灣的文藝電影說的對白很肉麻,即忸怩作態。」今年70歲的Michael Cheung笑道。文藝青年這個字眼早在1928年出現,當時有左派文人批評具資產階級的意識;香港的青年文藝運動則從五十年代初「文藝新潮」談起,六七十年代興起以寫作或文藝交流為主的文社,當中參與的大部份都是中學生。七十年代的文藝青年積極出版各類刊物,重文藝色彩的有《素葉文學》、《大拇指》等,亦有激進政治的《70年代雙週刊》。
https://hk.appledaily.com/lifestyle/20210410/OYRRSYJ7ZFBR7ADQ4PIOTXIJJQ/
影片:
【我是南丫島人】23歲仔獲cafe免費借位擺一人咖啡檔 $6,000租住350呎村屋:愛這裏互助關係 (果籽 Apple Daily) (https://youtu.be/XSugNPyaXFQ)
【香港蠔 足本版】流浮山白蠔收成要等三年半 天然生曬肥美金蠔日產僅50斤 即撈即食中環名人坊蜜餞金蠔 西貢六福酥炸生蠔 (果籽 Apple Daily) (https://youtu.be/Fw653R1aQ6s)
【這夜給惡人基一封信】大佬茅躉華日夜思念 回憶從8歲開始:兄弟有今生沒來世 (壹週刊 Next) (https://youtu.be/t06qjQbRIpY)
【太子餃子店】新移民唔怕蝕底自薦包餃子 粗重功夫一腳踢 老闆刮目相看邀開店:呢個女人唔係女人(飲食男女 Apple Daily) https://youtu.be/7CUTg7LXQ4M)
【娛樂人物】情願市民留家唔好出街聚餐 鄧一君兩麵舖執笠蝕200萬 (蘋果日報 Apple Daily) (https://youtu.be/e3agbTOdfoY)
果籽 :http://as.appledaily.com
籽想旅行:http://travelseed.hk
健康蘋台: http://applehealth.com.hk
動物蘋台: http://applepetform.com
#文青 #深水埗 #大南街 #村上春樹 #Cafe
#果籽 #StayHome #WithMe #跟我一樣 #宅在家
形容美的詞彙 在 Kyrie J Youtube 的最讚貼文
KyrieJ -《 88BARS 》 (remix)
===== 記得開啟 CC 字幕 =====
詞曲 / Lyrics and Composing by:KyrieJ
編曲 / Beat by:rgry
錄音 / Recording by:Gunta
混音 / Mixing by:Gunta
母帶 / Mastered by:Gunta
視覺 / Visual by:陳子揚
原曲:https://youtu.be/B1tArM5XYuc
KyrieJ:
https://instagram.com/kyrie.j_
https://streetvoice.com/KyrieJ/
https://www.facebook.com/KyrieJJJ
Gunta:
https://www.instagram.com/guntamadeit/
https://www.instagram.com/ragerklan/
歌詞:
To be or not to be
Not a question to me
早就打定了主意 為了達到目的 沒有任何顧忌
就算現在是nobody 也足以讓你聽 覺得服氣
ain’t no 熊 but Kyrie J一樣能帶給你 聽覺的福利
(請支援收銀!)
If you tryna Fuck with me 你將會像 個靶子 被我射死
不管誰來都一樣 不信你去聽我 Fuck BR的歌詞
沒辦法克制 歇斯底里 隨時提筆 誰能比擬 沒人匹敵
就算Lizi 藥王 我也 照樣 比他們都還要狂
像是被 海馬瀨 人召 喚出的青眼究極龍
能用在 我身上的 詞彙 我想大概只有 經典夠形容
not 八十八個差不多 but 八十八個bar
要hotter than 9m88 外加 統神端hot-pot
call me 八八男
a.k.a 韻腳渣男 我專門玩弄韻腳
要證明實際上成功是靠我的音樂實力 而不是命好
文字遊戲的技巧 完美展現 like I’m 施傑森
不再只是學生
當我戴上饒舌歌手的識別證
Loser你 怎麼那麼 無能
連拍都唱 不整齊
把你技巧和身體都升級了也不及
富有神力的 soft lipa 杜振熙
我賭你正被我吸引
才氣溢出來你還以為是
海底隊原來是KyrieJ唱的太激烈像是
開了 八 門 my god
歷經了亂流 so what
持續的戰鬥 直到有天也會從亂流蛻變成 sowut
幹掉了清華我持續進化
yeah 兵不厭詐 這是場戰爭
繼續的完成了一個個大計畫
新生代的King 現在起換人
沒實力你會被當成空氣
沒梗的shit 稱不上綜藝
管你來自木柵還是中壢
腦子都比我差 cause I’m交大資工系
就事論事來論實力我就是救世主Eren Yeager 當我
拿出我真本事讓整座城市大亂拎北狂的像鐘祥宇野格炸彈
跟我炒牛肉你望其項背
尚未防備 我早已上位
上到了嘻哈圈word play的王位時
瞬間的爆發力像是Pompeii
瞬間就滅了你的村莊
like I’m 珍妮佛羅培茲
用我的韻腳踢碎你城牆 你
還以為趁機溜就沒事
怎麼躲也躲不過 我的AOE 當你聽到了空襲警報
怎麼打也打不過 "KyrieJ作弊" 記得要加上空氣引號
大 嘻 哈 海選 zero pass
但 還是 會
work my ass off till death
till one day 會 成為 業界 之最
though 現在還沒站 上頂端的Tier 1
繼續的幹 就算會窮 仍不停戰鬥 S/O T卍
na mean
那些攻擊我的長相當我秀出我的強項
會懂人不可以貌像就像海水不可斗量
隨便小露一點鋒芒你就高舉白旗投降
跟我道完歉後還去偷向國賠求償
說我讓你受傷被我當眾戳破你在唬爛
就算你看不慣但你無法把我阻攔只能
乖乖就範看我秀翻全場 過五關斬六將
不成神 便成鬼 當我把這整首出爐
像巨人看著侏儒 shit 你我根本人鬼殊途
88 bars challenge 我得先跟各位道歉
抱歉哥會拿下first place
形容美的詞彙 在 形容很美的詞2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的推薦與評價
描寫美的的成語,形容“美的”成語有哪些?,1樓蛙家居美中不足十全十美美輪美奐美不勝收盡善盡美良辰美景至善至美物美價廉美人遲暮天不作美兩全其美豔美 ... 形容風景很美的 ... ... <看更多>
形容美的詞彙 在 形容很美的詞2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的推薦與評價
描寫美的的成語,形容“美的”成語有哪些?,1樓蛙家居美中不足十全十美美輪美奐美不勝收盡善盡美良辰美景至善至美物美價廉美人遲暮天不作美兩全其美豔美 ... 形容風景很美的 ... ... <看更多>
形容美的詞彙 在 美麗話語 的推薦與評價
皓齒蛾眉---潔白的牙齒,修美的 ... 多用為祝人嫁娶之詞。亦作夭桃穠李。 養顏有術---保養得法,使容顏長保青春美麗。 花不溜丟---形容人花俏美麗。 貌美如花---形容女子如花 ... ... <看更多>