Dec
源起
Mylar 是一個 Eclipse 上面的附加工具,這個工具主要是轉變工作的方式,把原先的專案檔案 (project/file) 為主的開發方式,轉為工作流程 (task) 為主的方式。
參考
舉例
舉一個 Spring-OSGi 的 bundle 來說,變動一個服務內容需要下面幾個檔案,這類變動不是 refactoring 可以幫你代勞的那種,通常是比較巨大的變動與新增。
File-Focused 檔案觀點如下 :
- [Service Interface Bundle] /src/haha/service/FooService.java/haha()
- [Service Interface Bundle] /META-INF/MANIFEST.MF/Import-Package: xx
- [Service Implement Bundle] /src/haha/service/FooServiceImpl.java/haha()
- [Service Implement Bundle] /MEAT-INF/MANIFEST.MF/Export-Package: xx
- [Service Implement Bundle] /MEAT-INF/spring/service-beans.xml/..
- [Service Implement Bundle] /test/haha/service/FooServiceImplTest.java/..
- [Service Implement Bundle] /test/haha/service/FooServiceImplTest.xml/..
- [Service Client Bundle] /src/haha/client/FooServiceClient.java/..
- [Service Client Bundle] /MEAT-INF/MANIFEST.MF/..
- [Service Client Bundle] /MEAT-INF/spring/client-beans.xml/..
- [Service Client Bundle] /test/haha/client/FooServiceClientImplTest.java/..
- [Service Client Bundle] /test/haha/client/FooServiceClientImplTest.xml/..
總計有 12 個檔案,每個檔案可能有數個地方需要更改,影響所及可能達到數十個地方。過幾個月後,即使是原負責寫的人來改,也要許多時間來重複達到之前做過的路徑,這中間 unit test 可以協助確保沒有改錯或是動到其他地方,但是對提高修改速度還是需要某些工具。
自己寫的都會如此,更何況是原先都尚未接觸的人接手修改。
Mylar 讓你跳脫出來,不用 12 個檔案中間有數十個地方要改的眼光去看這件事,這會讓全盤考慮受到阻礙,而是用 1 個工作流程 (變動服務內容) 來看,同時這個工作流程可以交換保留,方便後續維護工作。
Task-Focused 工作流程觀點如下,只剩下一個 :
- Modify Service Task
Mylar 簡易流程
- 新增 task
- Active Task
- 開啟編輯文件。
- 預設值自動將開編輯器的文件部份加入 context。
- 關閉編輯器會將文件整個文件退出這個 task。
- 很多文件開的時候,一定要關掉一些,記得關掉編輯文件前, 要先按 pause capturing context 再關 (1.0 裝好沒有按鈕,下拉不好找), 直接關整個檔案會被取消掉。
- Deactive Task
消失的 pause 按鈕
用過一陣子之後,可以體會為何 Mylar 1.0 正式版將那個暫停功能藏起來,其實是很人性的做法,因為你往往會做著做著忘了已經暫停,這時候 Mylar 幾乎沒有用。
不需要暫停的原因是根本不需要關 editor,這是 File-Focused 的習慣, 因為開開關關成為一種編輯習慣,突然 Mylar 讓你都不用關會很不習慣,往往一不注意就關掉 editor。
所以應用 Mylar 應該開了就不要關掉 editor,除非真的沒興趣才關, 不要有興趣的檔案,為了省開幾個 editor,在哪裡一直按 pause 。
那要是幾百個檔案有興趣,整個編輯區不就滿滿都是一堆 editor ? 其實不用去關或管這些 editor,讓 Mylar 去做就可以,專注於你的 task 才是 Mylar 應用的重點,其他的交給 Mylar 去做就好。
觀察
- 習慣不要關掉 editor,因為已經篩過,要關掉要注意 task 的 active 問題。
- 轉換工作方式需要動到許多舊的東西,也許從新專案開始比較好。
- 是否需要裝 issue tracking system,如果是小專案應該就不用, 如果是大專案,還是要裝一下比較好,看起來 Trac 不錯,只是裝了就要維護,這也必須考量。