WinPhone開發階段總結

首先,這篇文章基本沒什麼技術含量,它主要是我對最近業餘時間的WinPhone開發工作的一個總結.而且以我以往的學習經驗來說,這篇文章很可能對讀者中的大部分人都毫無用處,因爲所謂學習方法因人而異,這我深有體會,所以這裏我貼出自己關於WinPhone開發工作的一個階段性總結只是希望裏面哪怕能有一點點對你有所啓示,那應該就算這篇文章的最大成功了.

自從去年工作方向由.NET轉向PHP之後,C#基本就只能算我的一個業餘愛好了,雖然仍然關注着這個圈子,也喜歡着這門語言,不過畢竟不是工作,沒有實踐,自己實在是感覺寫不出怎樣深刻的東西來,不過好在有了微軟的WinPhone,糾結了幾個月之後終於還是下手了HD7,也開始了自己WinPhone開發者的純業餘生活.到現在,雖然做的東西仍然很簡單,但終於有了看得見的東西出來,我的手機號碼歸屬地應用和中國地鐵應用總算是成功掛到Market上了, 因此想想還是對這個階段的開發工作做個總結比較好, 希望能給大家以參考.

額,好像我總是如此囉嗦,還是上正文吧.

1.寫一行代碼勝於看十頁書.
    可能是因爲之前已經有一定WPF/SL的經驗,因此開發WinPhone應用時,除了微軟官方的UI交互指南(因爲WinPhone的UI設計理念確實和以前的應用不一樣),我並未看一頁書.大部分問題都是在遇到的時候纔去網上查找資料解決的,當然,這並非說我沒有查閱任何資料,實際上,直到現在,我每天仍然都會在WindowsPhoneGeek,MSDN和博客園上逛逛,看到不錯的文章或者代碼也會動手實踐下.
    因此,以我的感受來說,對大部分的有一定的C#開發經驗的園友來說,其實WinPhone的應用開發都不會太有難度以至於完全無法動手(當然,如果你做的是超級複雜的東西就另說啦),而且我始終認爲從實際寫代碼中遇到問題->解決問題的過程所收穫的經驗要比從書本中別人講解的經驗要深刻得多.如果你真的對WinPhone開發有興趣,那麼從現在開始就動手吧,不用糾結於去看哪本書,就我從目前介紹WinPhone開發的書本目錄介紹來看,這些書本一定都是第一章和第二章都是毫無意義的(第一章介紹WinPhone的設計理念,第二章介紹VS的WinPhone開發環境部署,對很多人來說,很是浪費紙張).動手不僅能更快發現你應用中存在的設計問題,還能解決實際運行中你永遠無法想到的意外.
   當然,我並非反對看書,我的建議是如果你真想學WinPhone開發,那就多動手吧,這樣你能更快進去開發的過程.

2.不要一開始就想把應用的功能做得夠大夠強夠完美.
   不要一開始就想着做一個超級複雜,讓人能一看就過目不忘的完美應用,這個我在開發過程中確實深有體會.其實我一開始並非想做上面的歸屬地應用和地鐵路線圖應用,而是一個鬥地主的遊戲,並且由於那時候WinPhone還不支持Socket,因此我一開始就計劃設計一個足夠聰明的AI系統,還爲此複習了下很早之前丟掉的AI書籍,但越做下去發現越沒信心做好,挫敗感也越強.於是在經歷了一個星期的空手而歸之後,我開始進行反思,發現自己的AI知識實在是太過貧乏,這也不是我的優勢所在,而且我的目的是至少前面一個應用是用來練手的,現在所做的工作實在不像,於是在下週開始果斷放棄之前的工作,而該從手機歸屬地應用開始,一個界面簡單,而是夠實用.這樣決定之後後面的工作就順利了,並且有了第一個實用的工具第二個的思路也有了.這樣在經歷了一個多月的工作之後,終於還是將兩個應用提交了,雖然知道所做仍然還是很淺薄,但看到能有東西掛在market上面的那種感覺確實完全不一樣的.

3. 做出應用的特色, 但不一定要複雜.
    好的應用不一定要非常強大,老實說, 歸屬地應用確實簡單,就一個界面,四個按鈕,其他沒啥了.但我從Nokia3230到Samsung i900再到現在的HD7,我一直都認爲這個功能是我們日常生活中一個不可缺的功能.而且有了核心的功能你就可以圍繞它做更多的文章了.這樣做到後面也許你會發現你一開始很簡單的一個東西到後面可能會越來越強大.
    反之,如果一開始想太多,各種擴展,各種架構,那你反而可能一直在徘徊, 在浪費時間,結果到頭來一無是處.
    所以,如果你有了想法,並覺得這個想法確實會對別人的使用有很不錯的幫助,那就開始動手吧,哪怕它實現起來並無太大技術含量.

4. MVVM? 框架?
   是否使用MVVM框架?這個問題我覺得因人而異,但你更應該看哪種方式你更順手,我其實蠻喜歡SL的INotifyPropertyChanged,我甚至想要是C# 5中能實現屬性自動雙向綁定的特性(比如在要雙向綁定的屬性上加個特性[Bind(Ways.DoubleWay)])那C#該有多好哦.不過我對Command確實不太感冒(~~明顯是因爲境界不夠),因此在實現時我保留了ViewModels,但對於事件還是用自己習慣的Click方式來實現,雖然這讓MainPage.cs裏的代碼看起來太多太亂,不過現階段來看這更有利於我書寫代碼的效率,同時修改代碼我也更加習慣.因此我的建議是在初期你應該將很快提交能很好工作的應用這個目標放在首位,至於框架,以你自己習慣的方式來進行吧.哪種更有效則更適合你.
   當然,上面的話也並非說我們可以一直這樣,每個人都會在階段性的工作之後對之前的代碼進行總結,MVVM確實是SL/WPF一個不錯的代碼架構方式,同時它在單元測試時也更優異.因此,在總結的時候,你需要對之前的工作做一個權衡,而不是不經思考,一成不變的用最初的思考方式進行下去.

5. 從實例開始
   如果糾結於如何開始編寫應用的話,那我建議你不妨從這裏(http://create.msdn.com/en-US/education/catalog/)下一個示例代碼開始.絕對不要小瞧這些實例代碼的,我已經看到Market上面N多人直接把各種實例代碼(比如BlackJack)改改就放上去了.這些代碼不僅能給你一個比較標準的代碼結構,而且能迅速帶你進入正常的應用運行流程,這種過程我覺得比你在枯燥的書本上看一章要好得多.你可以看看GameStateManagementSample這樣的例子,裏面的架子基本上都已經幫你搭好了,菜單有了,主界面有了,唯一缺失的TODO就是player和enemy,這些只需要你按照自己設想的去填充就好了.微軟別的不說,在對開發人員的引導方面,確實是做得不錯的.

6. 給用戶提供做夠多的反饋通道
   可能你的應用開始的功能非常簡單,但你要相信用戶,很多你看不到的東西,他們都能看到和想到,因爲用戶不像你,你只有一個腦袋,但他們則是千千萬萬個聰明的腦袋,他們可能遇到你沒遇到過的問題,這些都是用戶反饋的好處,所以,一定記得在你的應用裏面留下至少一個反饋的通道.我的第一個應用並沒有留下自己的email鏈接進行反饋,因此看到的大部分反饋都是來自於review裏面的.於是從中國地鐵開始,我在關於頁面中留下自己的郵箱,並提供了很方便的郵件編寫鏈接.這之後我收到了兩個很不錯的反饋建議(如果他們有看到,我在這裏謝謝所有提供反饋的WinPhoner).雖然最近因爲工作的關係沒辦法馬上發佈新版本,不過我會盡快提交.

7. 不要一開始就考慮賺錢
   如果你一開始時抱着賺錢的想法來做Win Phone開發的話,那我想你很可能會有兩個結果,一是因爲失望而熱情喪失並最終離開,二是因爲需要糾結於怎樣才能做出別人願意花錢的應用而一事無成.當然,你也可能會成功,但對個人開發者來說,我建議大家一開始不要抱有太高期望值,你就把做應用當成一件結交朋友,鍛鍊能力的事情就夠了.看到應用的發佈,看到別人給你應用不錯的評價,看到能給別人帶來實打實的幫助,那種愉悅感也是相當不錯的,至少能在以後的生活中給予你自己更多的信心,我個人認爲這些東西有時候比那點點錢來得更快.

8. 保護好你自己的核心代碼
   老實說,微軟在代碼保護上做得並不好,雖然沒用過,但我曾在論壇上看到已經有人做出工具可以直接下載XAP文件,也看到很多win phone論壇放出了各種付費應用的破解文件.對.net應用來說,得到了XAP文件,如果你一點保護沒做,基本就是赤裸裸的了,因此,雖然你永遠無法防住那些真正想要偷竊你代碼的無德份子,但一些基本的工作你還是得做,特別是如果你的應用基本沒有需要與服務器交互的功能的時候. 當然,如果你的大部分核心邏輯都放在服務端這個問題就不用太擔心了.
   雖然如此,大家也不必太看重勞動果實偷竊這種事情,這樣的人畢竟是少數.所以雖然很不幸,我的兩個應用的優勢都是本地數據存儲, 我一開始有擔心自己的勞動成果會被偷走(貌似也確實懷疑有人偷走過,當然我沒有證據),也因此降低過熱情,但想開了就淡定了.應用這玩意,本來自己的就是免費的,別人要偷也賣不了錢,那就偷去吧.這裏我給大家的建議也是如此,你一定要做好最壞的打算,接受它但也不要放棄希望,這世界總有些事我們無法阻擋,但我們還能阻擋大部分的事情,不是麼?

好像我其實本來還有更多的體會,沒有記東西的習慣,以後記起來再加上吧.下面寫些工作總結吧.
1. 生成代碼時不要不設置項目的Netual Language,也不要設置成中文,至少目前不要這樣設置,不然你在提交應用的時候會得到完全摸不着頭腦的錯誤提示.如下圖:


2. Paint.NET是個好工具,http://www.iconfinder.com/是個不錯的圖標網站
   作爲一個程序員,UI設計是個相當大的煩惱,這直接導致我對遊戲類應用只能想想,無法動手.不過在設計圖標的時候,Paint.NET確實很有幫助,雖然它沒有PS那麼強大,但對圖層之間的操作還是相當方便的,所以我的兩個應用的圖標基本是先從iconfinder或者網上上面找個相關的圖標,然後進行一些文字插入和混合,最終雖然圖標仍然不好看,但總算有個東西了.所以你如果沒有個設計老婆或者合夥人的話,那麼你可以考慮使用下上面的工具湊活湊活吧.下面我給大家展示我自己的拙作(實在毫無藝術細胞,見笑了):

   上面就是我這差不多一個多月的業餘工作總結,總體來說,離開.NET有一年多了,這次因爲WinPhone而回歸. 總體來說, WinPhone對個人開發者來說(工作室我沒搞過,沒資格談論),如果你一開始野心並不是太大,從一開始一個小卻有用的思路做起,那麼這個生態環境其實也蠻適合你的.不需要太多的書籍(很多書籍也都是些重複的初級內容,沒什麼價值,甚至有些還不如MSDN或者Windows Phone Developer Tools Documentation), 只要你願意,從現在動手,那麼說不定有一天你真能收穫意外之喜哦.

    總結下來目前能記起來的東西就這麼多,忘掉的太多,技術方面的東西基本沒有(有機會的話我會在後面把自己代碼中認爲稍稍拿得出手的東西跑出來給大家參考下),更多的是自己的一些工作思路的總結,希望能對你們有一點點幫助就行,如果能做到拋磚引玉那就更好啦!

    然後是廣告時間啦, 呵呵,兩個很簡單的應用(Chinese Phone Address Finder/ Chinese Subway),首先,當然是得到你們更多的反饋了, 應用裏面有郵箱地址,你們隨時可以發郵件給我反饋, 還有就是, 俺最大的願望就是能攢到明年的年費99刀, 你們要在用這兩個應用實在很閒,可以考慮多點幾下上面的廣告哦,多謝啦,當然,不奢望,大家隨意就行! 另外, 我在慢慢熟悉這個環境之後,也會努力做出更多希望能對大家有所幫助的工具來.

     再然後就是給大家一些信息,那就是雖然普及度無法和其他平臺相比,但國內的Win Phone用戶也是有一定數量的,我的歸屬地應用發佈差不多20天左右,已經有了2k+的下載量(雖然到後期增長很緩慢), 相信那些熱門的應用下載量應該會更大, 這多少算個不錯的消息.

最後唏噓下, 從瞭解園子到現在差不多應該有4-5年了吧(真記不清了)看到園子裏的活躍園友每年都不一樣,心裏總有些感嘆.這個圈子陪了我挺多年的,一直都是當看客,沒處理,心中確實有愧.真心希望各位園友都能從這裏得到成長,成熟.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章