※ 引述《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
有它各自的优势;这需要时间与经验去适应、学习 :)