跳到主要內容

Refactor 學習筆記 I Extract Method

Refactor 學習筆記 I Extract Method

.
現在的公司對於程式技術上有一定的要求。雖然不是說不會寫程式,但是寫了多年程式並沒有深入研究 Refactor (重構)技巧。所以這次技術健檢的分數不甚理想XD。因此想要開始惡補一下。

Extract Method

動機

.
這是最常被使用的重構手法之一。這應該是看到一個過長的函式或是需要需要註解才能了解的程式碼,就應該將此段程式法放到一個獨立的函式中。
.
主要目的是為了有簡短而且良好命名的函式。因為如果每個函式的顆粒度都很小,那麼就容易彼此復用。再者如果函式都是很細的顆粒度,那麼要覆寫(Override)也會更簡單。
.
關鍵倒不是真的長度,而是函式名稱跟函式邏輯本體之前的語意距離太長。如果提煉出來可以增加清晰度,那就該做,就算函式名稱比原本程式碼還長也無所謂。
.

作法

.
函式名稱應該用意圖來命名,以[做什麼]來命名而不是[怎麼做]。但如果想不出一個更有意義的命名就別動
.
如果有僅用於被提煉碼的暫時變數,可以在目標函式宣告為暫時變數。
.
如果被提煉的程式碼會賦予區域變數值,那就要使用Replace Temp With Query來將暫時變數消滅再提煉。

感想ㄎ

.
雖然 Extract Method 觀念最簡單,也最常用。但是也不是隨便亂提煉就行。自己要有一個中心思想,就算提煉顆粒度很細小,他人不太習慣,但自己有自己的理由可以提出與他人溝通即可。並非一定要有多處同時使用才提煉。也可以先提煉,然後才更容易復用。
.
最難處裡的就是被提煉的程式碼有賦予區域變數的情況,這可能是最需要特別訓練的部分。

留言

這個網誌中的熱門文章

加密貨幣交易實戰心得筆記

加密貨幣交易實戰心得筆記 . 對於加密貨幣,雖然公司有個團隊已經在開發相關產品,但我自己只有大概了解什麼是加密貨幣,什麼是比特幣,以及什麼是區塊鍊。雖然稍微知道,但也只是知道,並沒有真的去購買跟投資。 . 幾天前公司舉辦了一場課程,邀請了史旺基到公司分享加密貨幣的交易實戰。課程需要自費,但其中包含了直接幫我們購買比特幣,並將購買的比特幣交易給我們。可以實際接觸到加密貨幣的交易讓我很期待,因此毫不猶豫的就參加了這堂課程。 . 這堂課程並不是在技術上來跟你說什麼是加密貨幣或是區塊鍊的技術是什麼,它著重在由淺入深的介紹什麼是比特幣、什麼是區塊鍊、什麼是去中心化、什麼是挖礦、誰是中本聰、什麼是以太坊以及以太幣、什麼是熱錢包以及冷錢包,等等這類的相關資訊。 . 學習並了解上面介紹的基本資訊之後,課程的重點放在了交易所的介紹與操作上面。我們一步一步的申請了台灣的兩個交易所,分別是 MaiCoin 以及 BitoEX。相信有在投資比特幣的人應該都已經知道,但對於沒有追上潮流的我來說,這個資訊真的是省了我很多研究的時間,立刻感覺前進了一大步,雖然手續費高常常可能卡幣,但中文介面,簡單的認證與交易方式,讓我感覺已經真的觸碰到了比特幣與區塊鍊的邊。 . 除了台灣交易所,更有國際交易平台的介紹與教學,這邊我就不一一介紹了,因為我自己也都還沒申請,而且這些國際平台很多是停止申請帳號的。 . 另外還有更多的資訊,包括怎麼開始投資,投資心法以及不少的中英文介紹資料,包括App的介紹。 . 這堂課除了讓我立刻從門外漢大躍進成初心者,更是直接開始打怪(購買)了,破除了這個最大靜摩擦力之後,我讓我的投資標的又多了一個可能,感覺非常值得。

C# Linq Select() 在 Java 的對應!!

最近用 Java 8 在寫 Android 的 Side Project, 由於因為工作的關係比較熟悉 C#,寫一寫覺得很多地方很不習慣,除了 Json 要使用 Gson library 來做序列化以外,還有 C# 的 LINQ 在 Java 用發也差很多。 這裡特別紀錄一下 C# 中 LINQ 的 Select() var result = productList.Select(x = > x.name).ToList(); Console.WriteLine(result); 在 Java 中 有 Stream() 可以用。例如  String result = productList.stream() .map(p -> p.name) .collect(Collectors.toList()); System.out.println(result); 來完成,之後如果使用到更多的功能,再來補充吧~

[團隊,從傳球開始]

. 最近跟公司的前輩聊天,當時問他有什麼什麼書可以推薦給我,他推薦了我一本書,這本書是"團隊,從傳球開始"。或許是他希望給我一個方向,因為我在目前的團隊裡面是經驗比較多的,需要更有領導力來帶領現在的團隊吧。 . 這本書是關於 John Wooden 這位傳奇教練的領導哲學。Wooden 是美國大學籃球史上最難以超越的總教練,他在 UCLA 執教時讓當時的籃球隊達成全國冠軍七連霸,最長連勝高達八十八次。 . 書中有許多讓我自己感到很有幫助的文字,我把它紀錄下來 . 領導者學無止境,若是停止學習就等同於死了 推銷自己的價值與原則 永遠不要企圖變得比誰更好,但是永遠不要停止成為最好的自己 成功金字塔特質 : 勤奮、熱情 、友情、忠誠、合作、自我控制、專注力、警覺性、衝勁、狀態、技能、團隊精神、鎮定、自信、極致的競爭力 怎麼教 : 先解釋、再示範、跟著做、接著不斷重複 律己最嚴 如果會議時間是三點,而你三點才到,其實你已經遲到了 要快,不要趕;如果你沒空把事情做好,那你怎麼可能還會有空重做一遍? 什麼東西不能教? 人格、靈敏度 跟願意傳球的人在一起 自己負責;最終你所做的決定,決定了你是誰 努力:成功的終極魔數。付出所有的努力,無論是個人或是團隊的一份子,都不是安慰獎或是次等的成就。在我看來,它就是頭獎,它才是最高等級的成就。 別做24/7便利商店;Wooden 的訓練方式是每天只要兩個小時的時間,全心投入,絕對要參與所有訓練的細節。然而一但練球結束,籃球也就跟著結束了。 一直問同樣的問題,[我該如何幫助我們的球隊變得更好?] 別當個大氣球 活在別人的期待是多麼蠢的一件事[太平洋也無法滿足所有人的期待] 擁有好人生 把你的資產最大化 這些摘錄的部份是我快速看過一遍後比較有感的地方。 整本書只有些許地方提到籃球,更多的地方反而是提到領導者的氣量跟原則。像是不斷學習,努力是重要的,勝利並不是最後的評斷。 . 這本書有好多很棒的觀念需要我細細琢磨,我覺得某些想法可以成為我自己的原則。 在看這本書之前我看過史蒂芬-柯維的與[成功有約],我發現這本書也有很多地方有重疊。像是要找到自已的原則,主動積極,努力不懈。 . 覺得最大幫助的幾個要點是,找到自己的路,全心投入事業2小...