<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Extreme Pattern: Hello Mylar </title>
    <link>http://blog.extremepattern.com/articles/2006/12/18/hello-mylar</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>enjoy</description>
    <item>
      <title>Hello Mylar </title>
      <description>&lt;h3&gt;源起&lt;/h3&gt;


	&lt;p&gt;Mylar 是一個 Eclipse 上面的附加工具，這個工具主要是轉變工作的方式，把原先的專案檔案 (project/file) 為主的開發方式，轉為工作流程 (task) 為主的方式。&lt;/p&gt;


	&lt;h3&gt;參考&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;&lt;a href="http://www.eclipse.org/mylar/"&gt;Mylar 官方&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.eclipse.org/mylar/start.php"&gt;Mylar Getting Started&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.eclipsezone.com/articles/mylar/"&gt;Introduction to Mylar&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.javaworld.com.tw/jute/post/view?bid=10&amp;#38;id=149515&amp;#38;sty=2&amp;#38;keywords=mylar"&gt;Mylar 試用後強力推薦&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.eclipse.org/mylar/doc/release-1.0.php"&gt;About Mylar 1.0&lt;/a&gt;&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;舉例&lt;/h3&gt;


	&lt;p&gt;舉一個 Spring-OSGi 的 bundle 來說，變動一個服務內容需要下面幾個檔案，這類變動不是 refactoring 可以幫你代勞的那種，通常是比較巨大的變動與新增。&lt;/p&gt;


	&lt;p&gt;File-Focused 檔案觀點如下 :&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;[Service Interface Bundle]
/src/haha/service/FooService.java/haha()&lt;/li&gt;
		&lt;li&gt;[Service Interface Bundle]
/META-INF/MANIFEST.MF/Import-Package: xx&lt;/li&gt;
		&lt;li&gt;[Service Implement Bundle]
/src/haha/service/FooServiceImpl.java/haha()&lt;/li&gt;
		&lt;li&gt;[Service Implement Bundle]
/MEAT-INF/MANIFEST.MF/Export-Package: xx&lt;/li&gt;
		&lt;li&gt;[Service Implement Bundle]
/MEAT-INF/spring/service-beans.xml/..&lt;/li&gt;
		&lt;li&gt;[Service Implement Bundle]
/test/haha/service/FooServiceImplTest.java/..&lt;/li&gt;
		&lt;li&gt;[Service Implement Bundle]
/test/haha/service/FooServiceImplTest.xml/..&lt;/li&gt;
		&lt;li&gt;[Service Client Bundle]
/src/haha/client/FooServiceClient.java/..&lt;/li&gt;
		&lt;li&gt;[Service Client Bundle]
 /MEAT-INF/MANIFEST.MF/..&lt;/li&gt;
		&lt;li&gt;[Service Client Bundle]
 /MEAT-INF/spring/client-beans.xml/..&lt;/li&gt;
		&lt;li&gt;[Service Client Bundle]
/test/haha/client/FooServiceClientImplTest.java/..&lt;/li&gt;
		&lt;li&gt;[Service Client Bundle]
/test/haha/client/FooServiceClientImplTest.xml/..&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;總計有 12 個檔案，每個檔案可能有數個地方需要更改，影響所及可能達到數十個地方。過幾個月後，即使是原負責寫的人來改，也要許多時間來重複達到之前做過的路徑，這中間 unit test 可以協助確保沒有改錯或是動到其他地方，但是對提高修改速度還是需要某些工具。&lt;/p&gt;


	&lt;p&gt;自己寫的都會如此，更何況是原先都尚未接觸的人接手修改。&lt;/p&gt;


	&lt;p&gt;Mylar 讓你跳脫出來，不用 12 個檔案中間有數十個地方要改的眼光去看這件事，這會讓全盤考慮受到阻礙，而是用 1 個工作流程 (變動服務內容) 來看，同時這個工作流程可以交換保留，方便後續維護工作。&lt;/p&gt;


	&lt;p&gt;Task-Focused 工作流程觀點如下，只剩下一個 :&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Modify Service Task&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;Mylar 簡易流程&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;新增 task&lt;/li&gt;
		&lt;li&gt;Active Task&lt;/li&gt;
		&lt;li&gt;開啟編輯文件。&lt;/li&gt;
		&lt;li&gt;預設值自動將開編輯器的文件部份加入 context。&lt;/li&gt;
		&lt;li&gt;關閉編輯器會將文件整個文件退出這個 task。&lt;/li&gt;
		&lt;li&gt;很多文件開的時候，一定要關掉一些，記得關掉編輯文件前，
要先按 pause capturing context 再關 (1.0 裝好沒有按鈕，下拉不好找)，
直接關整個檔案會被取消掉。&lt;/li&gt;
		&lt;li&gt;Deactive Task&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;消失的 pause 按鈕&lt;/h3&gt;


	&lt;p&gt;用過一陣子之後，可以體會為何 Mylar 1.0 正式版將那個暫停功能藏起來，其實是很人性的做法，因為你往往會做著做著忘了已經暫停，這時候
Mylar 幾乎沒有用。&lt;/p&gt;


	&lt;p&gt;不需要暫停的原因是根本不需要關 editor，這是 File-Focused 的習慣，
因為開開關關成為一種編輯習慣，突然 Mylar 讓你都不用關會很不習慣，往往一不注意就關掉 editor。&lt;/p&gt;


	&lt;p&gt;所以應用 Mylar 應該開了就不要關掉 editor，除非真的沒興趣才關，
不要有興趣的檔案，為了省開幾個 editor，在哪裡一直按 pause 。&lt;/p&gt;


	&lt;p&gt;那要是幾百個檔案有興趣，整個編輯區不就滿滿都是一堆 editor ? 
其實不用去關或管這些 editor，讓 Mylar 去做就可以，專注於你的
task 才是 Mylar 應用的重點，其他的交給 Mylar 去做就好。&lt;/p&gt;


	&lt;h3&gt;觀察&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;習慣不要關掉 editor，因為已經篩過，要關掉要注意 task 的 active 問題。&lt;/li&gt;
		&lt;li&gt;轉換工作方式需要動到許多舊的東西，也許從新專案開始比較好。&lt;/li&gt;
		&lt;li&gt;是否需要裝 issue tracking system，如果是小專案應該就不用，
如果是大專案，還是要裝一下比較好，看起來 Trac 不錯，只是裝了就要維護，這也必須考量。&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Mon, 18 Dec 2006 18:39:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:e7690314-3b42-4b97-af51-393217142f01</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/12/18/hello-mylar</link>
      <category>java</category>
    </item>
  </channel>
</rss>

