2013/07/22

the type or namespace name "xxxxxxxxxx" could not be found

[PROBLEM]
在Visual C# 2010,有project B的程式中使用到project A的class AA。AA有設為public,且project B的reference也有加A。
Design time時,在B的程式中用到AA,auto-complete都沒問題。
但是要執行時做build,就出現 the type or namespace name "xxxxxxxxxx" could not be found的錯誤

[SOLUTION]
錯誤主要是來自各project的target framework不一致。剛查了一下,project A的target framework是 ".NET Framework 4",而project B的則是 ".NET Framework 4 Client Profile"。
將project B也設為".NET Framework 4"就沒問題了。

target framework要在那裡設?點選你的project後,主選單 Project | xxxxxx Properties,在Application tab中就可以找到了。

2013/07/09

Visual Studio為什麼不會提醒我要加try/catch

最近使用Visual Studio 2010寫些C#的程式,有一點不太習慣的地方是,VS不會要求你那裡要加try/catch (用慣VS的人應該不會覺得不習慣啦,是我這種用過Java的人才這麼感覺吧)
這好處是可以忘了有exception這回事,就暢快的跟著happy path寫下去;可是,人生總是不會如此美好,該出錯的地方一定會出錯的
那開發者就很難去預想run-time時那裡會出錯,就算有心想去加try/catch,也不知道那些method會丟出exception,又會丟出那個exception class (除非去翻文件,可是,這不是IDE應該幫PG減輕負擔的地方嗎?)
結果,就加了一堆都是catch Exception的code

有Java開發經驗的人,應該會知道method後面會定義要丟那些exception,如:
public void foo() throws IOException, ParseException

在Eclipse, NetBeans等這些免費的tools裡寫程式,IDE總會提醒你那個method會丟出exception,你必須加try/catch或是在目前的method中加上throws。

一直在想,為什麼Java的工具可以做得到,Visual Studio卻沒這功能,而且VS經過這麼多代了,難道VS的users都不用這些功能?或是不抱怨VS沒有這樣的功能?
查了一下,確實還有些users在抱怨,可是...就是做不到

後來研讀了一下,推測了VS為什麼沒有這樣的功能 (對.NET我還不是很熟,所以有說錯敬請見諒,也請指教)

因為像在C#裡method的定義,並沒有像Java的throws的宣告
在Java的工具中要做到這樣的功能很容易,tool只要去查你叫用methods的宣告,就可以知到這些methods有沒有丟exceptions,丟怎樣的exceptions,然後再提醒PG要處理,但是.NET中method並沒有這樣的宣告,如果VS要做到這樣的結果,就必須去scan所有使用到的methods的內容,然後一層一層往上追上去,即使已經翻成MSIL的library也必須要去追

Java只要追你叫用到的那些methods的宣告;.NET則要追你叫用到的那些methods的內容,還有他的祖宗八代、親戚五十等等所有相關到的內容

這也可以體諒為什麼VS/.NET不提供這樣的功能了,實在是做不到 (應該說很難做到,如果要做,用VS寫程式應該會lag蠻嚴重的)

所以,用VS寫程式,就先當個happy PG吧
exception,等被丟出來再說吧

2013/07/06

賈伯斯的 10 個簡報技巧


賈伯斯的 10 個簡報技巧

  1. 圍繞主題 :賈伯斯在2008年發表MacBook Air時,一開場就說:「今天的空氣裡有些不同的東西。」是個相當巧妙又點出主題的隱喻。

  2. 展現熱情 :賈伯斯總是用awesome、cool的字眼來感染全場的情緒。

  3. 列出大綱 :賈伯斯的演說段落分明,一張簡報搭配一個主題,段落間的安排與串連也十分流暢,給予觀眾層次感,可以跟著演說節奏前進。

  4. 提供有意義的數字 :例如iPhone在200天總共賣了400萬支,這樣的說法對觀眾沒有太大的意義,但是當賈伯斯進一步解釋:iPhone每天可以賣出2萬支。這數字背後的意義代表著Apple是美國的市場龍頭。

  5. 打造令人難忘的一刻 :賈伯斯從牛皮紙袋裡拿出超薄MacBook Air的那一幕,是許多人終生難忘的場景。

  6. 視覺化的呈現 :很多人喜歡在簡報中放滿複雜的文字與圖表,但賈伯斯則讓投影片只呈現簡單的字詞與圖片,讓大家把焦點集中在產品身上。

  7. 簡報是一場表演 :通常賈伯斯的簡報,會穿插圖片與影片,再加上產品展示與現場來賓,就像一場電影或舞台劇一樣精采。

  8. 不要因為小錯誤而壞了大局 :發生狀況時,記得用幽默化解尷尬就好。

  9. 推銷產品的好處 :別忘了科技突破的目的,是要帶給消費者價值與好處。例如:MacBook Air是最輕薄的筆記型電腦,iTunes是下載音樂與電影的更佳方式,而不是容量、速度或輕薄等技術面的突破。

  10. 不斷練習 :賈伯斯能做出精采的簡報,並不是因為他是天才,而是因為他在每一場簡報前都經過長時間練習並測試每個細節。

[摘自 http://www.master60.com.tw/book.php?mg_pk=551]