iT邦幫忙

2023 iThome 鐵人賽

0
Software Development

程式碼氣味到重構之路 Code Smells to Refactorings系列 第 37

Smells to Refactorings Quick Reference Guide

  • 分享至 

  • xImage
  •  

完賽宣言

30又7天的挑戰終於完成,真是一趟特別的旅程。這一次的挑戰成果整理為新版本的氣味與重構對照表,連結如下:

Smells to Refactorings Quick Reference Guide下載連結

另外,我還將每一種氣味與分類的英文介紹說明整理為電子書模式,希望能多少回饋社群,讓未來研究這個題目或者工作上有需要的人作為參考。

下一步挑戰

過程中有諸多因為時間與能力的限制無法充分發揮,有些遺憾。鐵人賽結束之後也希望能持續精進,找時間補齊,詳細如下:

  1. 函式語言版本的程式碼氣味(目前版本為物件導向版本)。
  2. 每一種重構手法加上範例程式碼。
  3. 詳細介紹設計模式,因為不少重構都與設計模式有關。
  4. 更多的程式碼氣味與分類,主要是Marcel Jerzyk(2022)版本,思考是否能夠以此為基礎補充Joshua Kerievsky(2005)的不足。
  5. 靜態程式碼分析工具對應氣味的應用,以Reek為例,研究如何自動偵測氣味然後給出建議,減少人工判別。
  6. 出書(假如有出版社有興趣)

參考資料

本次挑戰大量參考了網路上各家學說,實在是很有意思,整理列表如下:

Year Title Author Smells Catalogs Comment Note
2002 Refactoring: Improving the Design of Existing Code Martin Fowler 22 -
2003 Bad Smells in Software – a Taxonomy and an Empirical Study Mika Mäntylä, Jari Vanhanen 23 6 Encapsulators is a catalog.
2005 https://www.industriallogic.com/blog/smells-to-refactorings-cheatsheet/ Joshua Kerievsky 27 - First create the smells to refactorings mapping table.
2007 http://grabbagoft.blogspot.com/2007/09/smells-to-refactorings-quick-reference.html Jimmy Bogard 27 - Adoption of Joshua version.
2006 Mäntylä Bad Smells in Software – a Taxonomy and an Empirical Study Mika Mäntylä 21 5 Most common well know catalogs and smells table.
- https://refactoring.guru/ Alexander Shvets 23 5 Very helpful online tool. Illustration of smell is nice.
- https://code-smells.com/ Gavin Douch 21 5 Very simple but clear. Icon of Smell is nice.
2022 Code Smells: A Comprehensive Online Catalog and Taxonomy Marcel Jerzyk 56 9
2023 Smells to Refactorings Quick Reference Guide Bater Chen 26 5 My version.

我的版本基本上是以Joshua Kerievsky(2005)為基礎,補上Mika Mäntylä(2006)也是目前網路上流傳最廣的五大分類版本,重新校對氣味名稱與重構發法。過程中幫助最大的是Refactoring Guru網站,也希望自己的版本能夠補充Guru的不足。自己是覺得我的創作有點意思,但是實際上如何,也只能留待別人評價。

首先會先把英文版電子書的部分缺漏補齊,感謝各位的閱讀與支持,謝謝大家。


上一篇
Other Smell > Incomplete Library Class 不完美的外部套件與重構
系列文
程式碼氣味到重構之路 Code Smells to Refactorings37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言