Odd-e CSD Course Day 3
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 Day 3的更多相关文章
- [LeetCode] Odd Even Linked List 奇偶链表
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- LeetCode 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- tr:even 与tr:odd
:even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...
- Leetcode Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
nth-child(odd):奇数 nth-child(even):偶数 使用时,如果是精确到数字时,切记是从同一级别的元素开始计算,而不是指定某个类才开始计算. 比如: <li>< ...
- [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. ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- 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 ...
- 越狱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. 嗯 ...
随机推荐
- 如何查看ubuntu系统版本信息
第一种方法: hadoop@master:~$ cat /proc/version Linux version 4.4.0-21-generic (buildd@lgw01-21):Linux内核版本 ...
- Charles抓包软件简介
Charles简介: Charles是一款抓包神器,因为他是基于 java 开发的,所以跨平台,Mac.Linux.Window下都是可以使用的,确保安装之前已经安装了JDK.Charles官网地址: ...
- Round A - Kick Start 2019
a.链接:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6 题意: ...
- cadence钻孔文件及光绘文件的生成
完成PCB布线之后,需要生成钻孔文件和光绘文件交给PCB厂家制作PCB板,下面总结详细方法!
- 自动生成业务库码表insert脚本
背景:服务请求一体化项目升级到V4的服务请求类型时,所有配置库数据迁移到各省的业务库中,虽然数据出现大量冗余,但是这是唯一能解决V4 大量服务请求类型不在同一张表中的骚操作了,防止查询服务请求类型时G ...
- Tomcat简单优化
解决 有两种解决办法: 1)在Tomcat环境中解决 可以通过配置JRE使用非阻塞的Entropy Source. 在catalina.sh中加入这么一行:-Djava.security.egd=fi ...
- ubuntu 修改系统时间无效
用root用户修改服务器时间无效:使用hwclock -w也不行 解决方法: 需要取消自动从互联网同步时间才可以的 timedatectl set-ntp 0 上面的命令可以关闭自动同步,然后你再设置 ...
- LeetCode编程训练 - 位运算(Bit Manipulation)
位运算基础 说到与(&).或(|).非(~).异或(^).位移等位运算,就得说到位运算的各种奇淫巧技,下面分运算符说明. 1. 与(&) 计算式 a&b,a.b各位中同为 1 ...
- 高级Java面试总结2
1. JVM结构原理.GC工作机制详解 答:具体参照:JVM结构.GC工作机制详解 ,说到GC,记住两点:1.GC是负责回收所有无任何引用对象的内存空间. 注意:垃圾回收回收的是无任何引用的对 ...
- Eclipse极致性能调优
直接复制以下到eclipse.ini里面 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 -Xverify:n ...