【Classic TDD by Example】C# 版無限期、不限次 影音培訓內容正式推出,開放報名。
完成介紹,請參考:https://tdd.best/courses/classic-tdd-by-example-video-training/
【#你可以學會什麼】
➀ 怎麼做需求分析、測試案例分析、backlog items 分析、TDD 的測試案例設計、單元測試、TDD 的小步快跑、持續重構、假實作加上三角定位法。
➁ code smell 的辨識,例如 duplication, temp variable, primitive obsession, feature envy 等等。
➂ 會用到的重構功能與技能,大概整個 IDE 的重構功能都涵蓋到了,包含:
- rename, introduce variable/parameter/field
- extract method/class/interface/super class
- inline variable/field/parameter/method
- move/make method non-static (move class, folder, namespace)
- push member down
- replace switch/nested if logic
- split/merge/join variable
- change signature
- 如何移掉 out 參數的設計
➃ 設計原則:SOLID, 關注點分離, Simple Design
➄ 實戰 Refactoring to Patterns: strategy, chain of responsibility, template method…
【#你會得到的服務與內容】
➀ 你會拿到兩個影片,包含需求面的說明、解析、測試案例分析設計、待辦清單的設計。長度加起來為12小時40分鐘。
➁ 有一份線上講義,匯出成 PDF 共計 159 頁。(作業為2頁)
➂ 有一份 mind map, 跟著培訓做,會有 338 個 elements/nodes。
➃ GitHub上一份 181個 commits 的參考。
➄ 會有一個 slack workspace 供大家在上面發問、討論交流,以及方便我補充相關內容。
➅ 額外提供1hr online 1-1 coaching,企業報價為10630(不信的,有好幾張不同時間的發票金額與天數備註為證明,歡迎來跟我打賭)
➆ 如果因為這門培訓的練習,讓你打算訂閱 JetBrains IDE, 可獲得個人首年訂閱8折的 coupon, 舉例來說,如果是只有 Rider, 就可省27.8美元,如果是全家餐(全系列 10個 IDE 產品),則是節省 99.8 美元。
【#適合哪些朋友】
➀ 因為時空因素(例如人在國外或外地、因為疫情、因為週末時間得陪伴家人,只有深夜才能擁有自己時間的朋友),無法參加我的培訓,但又很想突破自己能力瓶頸的朋友,至少我很肯定你可以從中先獲得工作上有幫助的內容。
➁ 不想等那麼久才能上到實體課,怎麼報名都只能排在等待清單,要等到啥時才可以變強啊啊啊啊啊… 的朋友。畢竟我 2021 年的所有課,在一月份就已經全數額滿了。
➂ 喜歡反覆觀看影片學習、動手練習,能從反覆複習的過程中,獲得最大學習效果,獲得不同想法刺激的學習模式的朋友,這一次的影片絕對可以滿足你的學習方式。
➃ 上我的實體課覺得時間太短、觀念太多、實作跟不上,身心靈在實務課程節奏有點緊湊感覺吃力的朋友,但又覺得內容充實,可以學到很多東西的朋友,這是最適合你做一次打好基底的內容與形式。
➄ 對於內容提及的部份,覺得觀念不夠清楚,不知道怎麼實際進行重構、設計與實作出那些技巧和模式,最終達成 #簡單設計 成果的朋友。
甚至我覺得,即使不是這種學習模式的朋友,大概也避不掉得反覆看、反覆練習好幾遍,因為要行雲流水,得各環節都打通才行。
【#不適合哪些朋友】
➀ 如果因為影片課程的屬性,而只期待著課程費用要比較低的朋友,建議不要買。
➁ 只想看影片,不想打開 IDE 跟著練習 coding 的,建議不要買。不要浪費時間浪費錢,你只看食譜也無法學會煮菜,只看游泳的影片也無法學會游泳的。
➂ 看不懂也不想發問的人,不要買。因為這樣誰都幫不了你。
➃ 不想要自己相關資料被壓浮水印在自己購買的影片上的人,不要買。有壓你個資的影片,只有你跟我擁有。而你的個資只會在影片上使用,不會挪作他用。(確定的是,上面不會有身份證字號或護照號碼)
【#票價資訊】
♥ 一般票:NT$ 36,000
♥ 過來人推薦票(請附上已經購買此影音課程的推薦人,報名附上他的出貨序號,以及 email):NT$ 35,000
♥ 老鳥票(指 2018 年後參加過 91 的公開培訓課): NT$ 34,500
定價標準緣由,請見課程介紹。
【#報名方式】
想要報名的同學,請將下列的報名資訊 joeychen@odd-e.com。確認報名成功之後,我會回信給您告知出貨序號,以及對應的匯款資訊。
> 信件標題:Classic TDD by Example: {name} 報名 {程式語言版本}
- 真實姓名
- 聯絡電話
- email (相關權限與未來老鳥票依據)
- 遮罩過的身份證照片(身份證字號、生日、換發日請都遮罩)
- 與真實姓名能對得起來的名片、帳單或信件照片(用來雙重驗證真實姓名的一致性,以免有人用他人身份證或網路上的身份證照片)
- 程式語言
- 推薦人的出貨序號與 email (如果票種選擇 【過來人推薦票】,請附上此資訊)
【#授權條款】
購買人付費之後,等同於已同意下列條款:
- 授權僅限本人觀看,不限制裝置,無限期,無限次觀看影片。不依賴於平台,將直接提供影片下載連結,所以請不用擔心在平台上下架的問題。
- 購買將採實名驗證,影片將壓上購買人相關個人資訊浮水印。影片、程式碼內容等,未經本人授權,不得於公開場所、平台觀看,不得擅自販售、分享、散佈、擷取圖片或影片片段侵害作者權益等行為。請購買人妥善保管影片,以保護雙方權益。
- 不論「有償或無償」,均不得已在未經同意的情況下將影片做公開分享、重製、散佈、改做
- 本於誠實信用原則,影片僅供個人學習使用,不得共用
- 若違反前述約定,則著作財產權人可以請求所受損害與所失利益
【#出貨清單與出貨狀態】
因每個人的影片都會有客製化的調整與浮水印資訊,故每天產能有限,目前一天可處理 4~8 張訂單。
所以列出對應的出貨清單與狀態,各位可以看到自己的出貨序號,以及目前處理到哪一張訂單了。
出貨清單:https://hackmd.io/@SYvyb1O4SLq8W6nvAQW5mw/ByVVUt86O
「static c語言」的推薦目錄:
- 關於static c語言 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於static c語言 在 F i.n.t Taiwan Facebook 的精選貼文
- 關於static c語言 在 91 敏捷開發之路 Facebook 的最讚貼文
- 關於static c語言 在 Re: [問題] static下的全域指標結構陣列該如何初始化 的評價
- 關於static c語言 在 為何Google 禁止工程師使用C++ static object? | Jason note 的評價
- 關於static c語言 在 [問題] static變數用for迴圈與function重複宣告- 看板C_and_CPP 的評價
- 關於static c語言 在 C++ static 用法在PTT/Dcard完整相關資訊| 數位感-2021年11 ... 的評價
- 關於static c語言 在 C++ static 用法在PTT/Dcard完整相關資訊| 數位感-2021年11 ... 的評價
static c語言 在 F i.n.t Taiwan Facebook 的精選貼文
𝐹 𝒾.𝓃.𝓉&𝒶𝓃 𝒶𝓃💗𝓉𝒽𝑒𝓇 𝒶𝓃𝑔𝑒𝓁𝓊𝓈
於"Buyee日本專業代購平台"正式上線📣
👉https://shop.buyee.jp/fint-shop
感謝各位粉絲的耐心等待💕新的商店提供更便利的購買服務✨購買上有任何疑問歡迎私訊發問💌
Buyee首頁選擇喜好語言,系統就會自動帶入中文說明,於商品內頁無須再選擇翻譯功能⚠️
SIZE及COLOR選取日文後會以英文表示❗
趕快試試最新的Buyee Shop服務👛🎵
👉https://shop.buyee.jp/fint-shop
world shopping~輕鬆購買日貨🛍️✨
👉https://www.fint-shop.com/
2020 Autumn Collection Season Styling🍁😍
👉https://www.fint-shop.com/fs/fint/c/2020autumnstyling
2020 Autumn Collection【Twinky】Movie🎥
👉https://www.youtube.com/watch?v=7010wedXftU
不必飛日本也能輕鬆入手的國際轉運服務👛✈️
👉https://www.tenso.com/cht/static/lp_shop_index
IG:@fi.n.t_official
Weibo:@Fint_official
#TWINKY #fint2020AW #AUTUMN #秋復古 #Buyee #日本專業代購平台 #Fint #ananotherangelus
- - - - - - - - - - - - - - -
#japanesefashion #outfit #classical #antique #vintage #vintagefashion #vintageclothing #retro
static c語言 在 91 敏捷開發之路 Facebook 的最讚貼文
最近碰到蠻多朋友或客戶的需求,想要針對 ActionFilter, Decorator, DI 的 service locator,middleware/interceptor 或是其他 static helper 相依的情況寫單元測試,卻總是不順、卡手。(尤其是 service locator)
總把測試寫得牛鬼蛇神的,即使看到了綠燈,這測試活超過一個月之後,就人見人厭、爹不親娘不愛的。
更甚至總覺得寫測試很花時間,維護起來更花時間。
其實這些有一半是產品設計不良,有一半是測試設計不良。
(說難聽點,就不是測試的問題,是工程師能力的問題)
很多時候,沒見過人家可以怎麼行雲流水地在 legacy code 上整理、抽絲剝繭,一路用工具重構到具備可測試性,再把測試重構到跟人話、規格、需求情境一樣,是很難想像 #原來可以這樣寫Code 的。
今年的梯次已滿,明天一月的 【#針對遺留代碼加入單元測試的藝術】,只剩下 5 席,live demo 支援 java/kotlin, python, php 與 C#。
參考:https://dotblogs.com.tw/hatelove/2020/08/21/Unit-testing-effectively-with-legacy-code-202101
會不會到時已經可以支援 node.js 與 Ruby 我也不知道,但基本上一法通、萬法通,概念都一樣。
#動態語言其實相對單元測試好寫很多,不寫真的是太浪費了。(寫得醜,更浪費人生)
想要觀望晚點才報名的同學,恩....good luck....luck 可能也沒有用,你的問題可能不在寫程式,而是在執行力上。
static c語言 在 為何Google 禁止工程師使用C++ static object? | Jason note 的推薦與評價
網路流傳的Google C++ Style Guide 裡提到:Google 禁止旗下工程師使用static object,僅允許使用static Plain Old Data(ints, chars, floats, pointers),或POD array/ ... ... <看更多>
static c語言 在 [問題] static變數用for迴圈與function重複宣告- 看板C_and_CPP 的推薦與評價
用for迴圈呼叫function,在function宣告static變數並累加,變數會累加, 但為跳離在進入function時何不受到"宣告"被 ... google "c++ static 變數" 不是就有一堆了嗎? ... <看更多>
static c語言 在 Re: [問題] static下的全域指標結構陣列該如何初始化 的推薦與評價
※ 引述《NDark (溺於黑暗)》之銘言:
: ※ 引述《kikiqqp (喵食罐頭)》之銘言:
: : 抱歉這個標題不太好,不過我不太清楚要怎麼描述
: : 今天我先定義了一個結構為
: : typedef struct
: : {
: : BYTE drv_type;
: : BYTE drv_mun;
: : BYTE drv_size;
: : BYTE drv_vol[512];
: : } VOLFS;
: : 然後再宣告一個指標
: : static VOLFS *VolFs[2];
: 因為你用c compiler所以整個事情搞得很複雜.
: 你的情形下
你不熟語法, 所以回答問題還把它複雜化了
: 初值的方式就是這樣
: static VOLFS *VolFs[2] =
: {
: {0},
: {0}
: } ;
static VOLFS* VolFs[2] = { NULL, NULL };
^^^^^^
星星我會習慣和元素型態放在一起, 既然是兩個指標那麼就用
NULL 來初始化. 但如果你其實是想要:
1. 兩個指標都指向已經存在的結構變數
2. 被指到的結構變數每個位元組都是 0
那麼再加上兩個靜態結構變數即可:
static VOLFS data[ 2 ] = {
{ 0, 0, 0, {0} },
{ 0, 0, 0, {0} }
};
static VOLFS* VolFs[2] = { &data[0], &data[1] };
靜態結構變數陣列 data 裡元素的初始化方式稱作:
aggregate initialization
https://ppt.cc/A8HN
雖然 data 跟 VolFs 初始化順序是不確定的, 但是取成員位址來
初始化另一個陣列不會影響執行 main() 之後的結果.
: 但這不是你要的,你要的就是另外寫一個初始化函式
: 在main的時候找機會去配置記憶體給那個陣列
: VOLFS* VOLFSInitilaize( void )
: {
: VOLFS* ret = (VOLFS*)malloc( sizeof( VOLFS ) ) ;
: memset( ret , 0 , sizeof( ret ) ) ;
: return ret ;
: }
: ...
: VolFs[0] = VOLFSInitilaize() ;
: VolFs[1] = VOLFSInitilaize() ;
: 以下是c++編譯器下類似c的做法
: 比較符合你要的在宣告時就初值好.
: #include <stdio.h>
: #include <stdlib.h>
: #include <string.h>
: typedef struct
: {
: char drv_type;
: char drv_mun;
: char drv_size;
: char drv_vol[512];
: } VOLFS;
: VOLFS* VOLFSInitilaize( void ) ;
: static VOLFS *VolFs[2] =
: {
: VOLFSInitilaize(),
: VOLFSInitilaize()
: } ;
: VOLFS* VOLFSInitilaize( void )
: {
: VOLFS* ret = (VOLFS*)malloc( sizeof( VOLFS ) ) ;
: memset( ret , 0 , sizeof( ret ) ) ;
: return ret ;
: }
: 正式c++的封裝方式會像這樣
: class VOLFS
: {
: public :
: VOLFS(void)
: : drv_type( 0 )
: , drv_mun( 0 )
: , drv_size( 0 )
: {
: memset( &drv_vol , 0 , sizeof( char ) * 512 ) ;
^^^^^^^^ 要搞清楚這邊的語意
: } ;
: public :
: char drv_type;
: char drv_mun;
: char drv_size;
: char drv_vol[512];
: } ;
: static VOLFS *VolFs[2] =
: {
: new VOLFS ,
: new VOLFS
: } ;
: 是不是乾淨多了?
: 不過經驗上還是建議減少使用static,減少使用多維陣列,
: 因為控制不好很容易出問題.
如果真的想把東西放堆積上, C++ 是這樣寫的...
static VOLFS* VolFs[2] = { nullptr, nullptr };
static struct VolFsManager {
VolFsManager() {
for(auto& elem : VolFs)
elem = new VOLFS;
}
~VolFsManager() {
for(auto elem : VolFs)
delete elem;
}
} manager;
int main() {
for(auto elem : VolFs)
assert(elem != nullptr);
}
很基本, 而且比你的還乾淨...
順帶一提, VolFs 這變數命名很爛...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.105.94.167
※ 編輯: loveme00835 來自: 112.105.94.167 (07/20 03:31)
... <看更多>