2015年7月15日 星期三

[C#] 停止Thread的運作

一個可能的做法是,使用Join方法,並結合while,讓Thread充分地完成工作後再停止。
工作到一半緊急地停止,也容易讓資料變得不完全,難以除錯。
但如果真的停不下來怎麼辦?? 設定Retry次數??

while (thread.ThreadState ==  ThreadState.Running)

{
   thread.Join(10);
}

2015年7月10日 星期五

Loops 的 OOP 奇幻之旅 (1) - by Loops

[楔子]

上了Bill的課程,不,應該是更早之前,一個莫名的悸動,促成了我與Bill這微妙的緣分。

時空拉回到,那個佇立在風雨交加夜晚中的小咖啡館... ... ...

OOP,近乎禪」
坐在我面前的Bill,不疾不徐地說出了這句話。或許我不應該稱呼他為Bill叔,比爾禪師也許更為恰當!?

Bill接著說:「其實我們大腦看待世界的方式,本來就是物件導向式的。而物件導向很重要的一個核心概念,就是抽象化。我問你,甚麼是抽象化?」

在這一瞬間,我驚呆了。對於抽象二字,我除了畢卡索其他甚麼都想不起來啊!
我甚至開始懷疑,今晚我與禪師邂逅的公案,會不會超過10個人按讚... ...TAT

正當我還在煩惱的當下,接下來Bill說的話,讓我一輩子也忘不了。


[第一章:被神化的模式(Pattern)]

「在回答抽象化這個問題之前,先岔題一下。你信裡面有提到看過設計模式的書籍。很多學習寫程式的人,常常會想要『套用某個模式到某個專案中』,這反過來了。」


咦!?


「你要想的是...    你 。 想 。 解 。 決 。 什 。 麼 。 問 。 題     




「解決問題的過程中,你會發現,這些你想出來解決問題的『方法』,就是書上面說的『模式』」


咦 咦 咦!?


從後背尾椎一股竄流而上直衝腦門的十萬伏特電流,讓我不禁夾了個冷筍。

這單純、簡單、樸實卻又直搗核心的觀念,輕易地摧毀了那被我神化了的設計模式宮殿,炸裂出一株擁有23個末節分枝的大樹。

我彷彿聽到Erich Gamma一派輕鬆地坐在枝頭上哼著必昂濕的I am Singleton~ I am Singleton~


如果這不是美,那甚麼才是美?




 (未完待續... ...)

2015年7月2日 星期四

軟體設計:像地圖一樣縮放

古語云:「大處著眼,小處著手」 這句話應用在Coding也是一樣 1. 把視角放大,描述需求 2. 將需求中的關鍵步驟做出流程

2015年6月29日 星期一

Interface 中的 屬性 get & set

如果希望Class實作Interface中的property,但是只希望該property具有下列特性:

{get; private set;}  封裝set的方法


這時候的Interface中宣告該property時,只能包含get


interface IPerson
{

    double Height { get; }


}

Class Person : IPerson
{
    public double Height {get; private set;}

}
interface中的屬性不能宣告為private set,否則會出現下列錯誤訊息:"Height.set': accessibility modifiers may not be used on accessors in an interface" 但如果宣告成set,Class的實作interface時,該屬性一定要一併宣告成set,否則會出現下列錯誤: "Name.set' is not public."