Mocking

在提到Mocking時,其實有提到為什麼我們需要 Mocking

from: Odd-e CSD course

可以透過上圖來了解這個概念,當我們需要用到 Mock 時,其實是因為我們測試目標與其它類別有相依,而且有進行相關的互動。這時候我們就需要利用 Mock 來解決相依的那一個類別,讓我們測試能更容易的進行

Code Smells & Refactoring

今天主要的是介紹了一下 Code Smells 與 重構的一些技巧

當中也透過 Code Review 提醒我們一些注意事項

Code Smells 與重構網上資源太多,這裡就不多著墨。比較有趣的是一個點,我跟小夥伴在做一個功能時,用了 Code Generator 產出了 CRUD ,但在最後回顧時, PO 說了,他其實並沒有要 RUD 的功能,但是我們卻做了,這是一件很可怕的事。 為什麼? 這代表團隊成員完成後 PO 才知道,而這些時間其實是白花的。

你其實偷了 PO 的錢  ,這件事其實讓我蠻驚訝的,因為平常開發時其實並不會想到這件事,有時候在做功能時,真的會多花了時間去做了一些目前還不需要的設計或額外的功能,卻完全沒想到其實這是一種無形成本。在當下聽完之後其實又有另一種體悟 XD

而在重構這個部分 Terry 有建議我在 C# 中有幾個東西最好不要碰

分別是 反射 、Code Generator 、 If #define ,原因很簡單,因為用了多過這些東西,會讓你的系統變複雜很難維護與測試,(if #define 事實上是 duplicate 的程式碼)

而在測試的部分他建議寫完一個新的測試後,應該要跑完全部的測試並且通過,而不是只看當下那個新的測試是否通過。

另一個更重要的是,保持一次只處理一件事,意思是當你的測試中有一個是 Fail 的,你應該先修復他後再進行下一個測試,千萬不要漏掉了這個步驟。

而在 TDD 不斷演進的過程中,也可以透過命名來覺察目前的階段。原因是命名在一開始的時候其實是比較具象化的,但在演進了一段時間後命名應該會變的比較抽象化才對

團隊

最後我問 Stanly 關於團隊的一些問題

Stanly 首先說了,他去日本帶 CSD 的時候,發現到日本團隊在進行的過程中,常常會問大家是否有聽過某個新技術,然後當下就進行分享。而其中一個更利害的是,他們有一個 Task 是要利用住址來取得經緯度。這個團隊成員討論完後就進行相關的調研,最後列出了一個表格,包含了實作方法、價格、使用限制。感覺真的很利害 !!!

而我提了一些問題是,如果回去就分享的話,對團隊會有幫助嗎?

Stanly 回應我,大多數人在分享的時候其實是會誤入一個陷阱,這個陷阱在於分享的內容沒有連結到聽眾的痛點,所以整個分享是沒有意義的,因為對他來說沒有任何的感覺

而如果想改善組織現況,比如說關於 TDD ,可以先觀察同事是否已經對持續做 Task 這件事上癮了,如果他已經上癮了。其實是比較難改變的

另外一種作法是,先持續的解決其它人問題,幫助其它人。

久了之後其它人就會有認知,你可以解決他們的問題 ,這時候再影響與推動改變就比較有機會

繼續閱讀 Odd-e CSD Course Day4

對課程有興趣的同學,可以到以下網站找到相關的資訊

https://www.odd-e.com/

Odd-e CSD Course Day 3的更多相关文章

  1. [LeetCode] Odd Even Linked List 奇偶链表

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  2. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  3. LeetCode 328. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  4. tr:even 与tr:odd

    :even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...

  5. Leetcode Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  6. CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))

    nth-child(odd):奇数 nth-child(even):偶数 使用时,如果是精确到数字时,切记是从同一级别的元素开始计算,而不是指定某个类才开始计算. 比如: <li>< ...

  7. [CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位

    5.6 Write a program to swap odd and even bits in an integer with as few instructions as possible (e. ...

  8. [Educational Codeforces Round 16]C. Magic Odd Square

    [Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...

  9. 328. Odd Even Linked List——多利用fake_head

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  10. 越狱Season 1-Episode 12:Odd Man Out

    Season 1-Episode 12:Odd Man Out -Sorry to keep you waiting. 抱歉让你等了半天 -Oh, it's, uh, not a problem. 嗯 ...

随机推荐

  1. asp.net core 下载文件,上传excel文件

    下载文件: 代码: 后端代码: public IActionResult DownloadFile() { var FilePath = @"./files/deparment.xlsx&q ...

  2. [LeetCode] New 21 Game 新二十一点游戏

    Alice plays the following game, loosely based on the card game "21". Alice starts with 0 p ...

  3. C++实验一

    实验结论 2-28 if...else #include <iostream> #include <stdlib.h> using namespace std; int mai ...

  4. js与jq基础记录

    1.在js传递参数中含加号(+)的处理方式: 只需要把js中传过去的+号替换成base64 编码 %2B:encodeURI(str).replace(/\+/g,'%2B'). 2.随机产生8位随机 ...

  5. mysql数据库备份_可执行文件

    这段时间接手运维的工作,刚开始就尝到了数据丢失的痛!老板抱怨,同事抱怨!都说先删库再跑路,我还不想跑! 下面是我的备份记录:(分4步) 1.编写备份执行文件sqlAutoBak.sh #!/bin/s ...

  6. XLua----热更新

    一.xLua 环境配置 1).Xlua中  Plugin  Xlua复制到 需要热更新的工程中---->Assets子目录 2).开启宏HOTFIX_ENABLE File---->bui ...

  7. HashMap 相关面试题及其解答

    Q:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点.当链表长度超过 8 时,链表转换为红黑树. transient Node<K,V>[] ...

  8. 【安富莱二代示波器教程】第6章 示波器设计—双通道ADC驱动

    第6章        示波器设计—双通道ADC驱动 本章节为大家讲解示波器的ADC驱动,采用STM32自带ADC实现.关于STM32F429的ADC,可以说处处有地雷,不小心就踩上了,如果简单的使用, ...

  9. Dubbo与Nginx区别

    Dubbo的负载均衡已经是服务层面的了,和nginx的负载均衡还在http请求层面完全不同.至于二者哪个优秀,当然没办法直接比较. 涉及到负载均衡就涉及到你的业务,根据业务来选择才是最适合的. dub ...

  10. [Swift]LeetCode707. 设计链表 | Design Linked List

    Design your implementation of the linked list. You can choose to use the singly linked list or the d ...