※ 引述《cjcat2266 (CJ Cat)》之銘言:
: 推 azureblaze: 這類技巧c#上用不了讓我很懊惱XD 10/13 15:27
: 推 cowbaying: C#有解構式阿 10/13 15:28
: 推 LayerZ: 推建構解構,多人維護專案好用.. 10/13 15:29
: → cowbaying: C#跟JAVA一樣都是用finalize 10/13 15:30
: → azureblaze: 可是c#是gc的時候呼叫而不是離開scope的時候呼叫啊 10/13 16:05
: → cjcat2266: 我個人很不喜歡GC,我喜歡100%控制object lifetime 10/13 16:08
: 推 akilight: 一開始寫C#:GC怎麼這麼懶人~超方便~ 10/13 16:10
: → akilight: 一段時間後:GC你可不可以不要在這時候回收,讓我控制阿~ 10/13 16:10
: → cowbaying: C#解構麻煩了點 要覆寫 10/13 16:36
: 推 cowbaying: 只是通常物件還是會留著 裏頭沒資料這樣 10/13 16:44
: 推 cowbaying: 不適用強迫症患者 10/13 16:44
C# 是有提供類似 deconstructor 的機制
http://msdn.microsoft.com/en-us/library/yh598w02.aspx
============================================================
來曬舊文了 :D
https://www.ptt.cc/bbs/Soft_Job/M.1388540668.A.3ED.html
(重新排版)
最近正好在 MSDN 雜誌 2014 一月號 (Vol. 29 No. 1) 上看到 David Platt
所著 "Don't Get Me Started" 專欄裡 "The Steam Drill" 這篇文章
網路版大約幾週內會在
http://msdn.microsoft.com/en-us/magazine/ 釋出
該篇文章以 John Henry ( http://en.wikipedia.org/wiki/John_Henry_(folklore) )
手持 +9 sledgehammer 單挑 steam drill 的傳說故事為引,導出下
面這個想法:
<blockquote>
Every advance in computing has generated a new abstraction layer. And with
every higher level of abstraction, the programmers who strove mightily to
master the lower level get angry.
</blockquote>
Platt 舉了一個例子:
在檔案(file)這個 abstraction layer 出現前,古早的程式設計
師是直接下指令去控制磁碟讀取頭,尋找正確的 track 與 sector,
再來讀取資料
在這些古早老前輩的眼中,“把資料簡化為一個邏輯上抽象的 byte stream
的我輩”只有一個嫩字可言; 把磁碟空間拿來儲存目錄(directory)
資訊更是浪費、大逆不道 :D
============================================================
很多時候,除非有覺悟真的從上到下每一層的東西都摸得一清二楚,
並完全掌握整個 toolchain
不然,通常自幹出來的各種機制 backfire 的機會很大,我最喜歡舉
的例子就是就是「自製 cache manager 反而造成 .NET gen 2 heap fragmentation」 :D
https://www.ptt.cc/bbs/java/M.1398461671.A.3B5.html
https://www.ptt.cc/bbs/java/M.1270114525.A.B4D.html
更不要說有這種異想天開的事發生 (WYSI-Not-WYG XD)
http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-unity/
「追根究底」是好的;隨著硬體的演化,不同的軟體寫作 paradigm
有它各自的優勢;這需要時間與經驗去適應、學習 :)