作者AmosYang (泛用人型编码器)
看板C_Sharp
标题Re: [问题] 新手学C#,有关{get;set;}的疑问
时间Thu Jan 1 06:05:26 2015
※ 引述《StupidGaGa (笨嘎嘎)》之铭言:
: 个人对於用不用TimeZoneInfo没什麽想法,
: 但是「时区转换」用TimeZoneInfo就比较高尚吗?
: 单纯的用加减时数就比较老旧吗?
与其去争论「老旧」或「高尚」,不如看看现实
* Time Zone Database
http://www.iana.org/time-zones
The Time Zone Database (often called tz or zoneinfo) contains
code and data that represent the history of local time for many
representative locations around the globe.
It is updated periodically
to reflect changes made by political bodies to time zone boundaries,
UTC offsets, and daylight-saving rules.
* TimeZoneInfo.cs
http://referencesource.microsoft.com/#mscorlib/system/timezoneinfo.cs
其中所需要考量到的各种大小细节, 事实上远超乎一般人的想像
* 与「时间」有关的经典案例
http://stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result
相关讨论:
https://news.ycombinator.com/item?id=6661392
除非是不需要处理日期、历法、时制、时区这类给「人」看的时间,
,不然,直接对时间作运算处理是极困难复杂的题目;宁可小心些,
也不该让新手有误解的可能性
: 如同有人问说如何在textBox换行,
: 某人回答 \r\n,後来有人很回说用 Environment.NewLine,
: 然後还说 \r\n 别土法炼钢,建议用 Environment.NewLine比较好,
: 我很想问,有差吗?
一个是 constant, 一个是 property ... "Effective C#" 里也讨论
过类似话题,网路上也有相关讨论
*
http://stackoverflow.com/questions/9286645/constant-value-properties
*
http://stackoverflow.com/questions/55984/what-is-the-difference-between-const-and-readonly
*
http://blog.codinghorror.com/properties-vs-public-variables/
*
http://programmers.stackexchange.com/questions/132747/is-having-public-constants-bad
讨论深入点的话,就 constant/field vs. property 的影响来说,
从 compile time .NET assembly layout 到 runtime CPU cache hit/miss
都是可以谈的; 更不用说,对程式本身的可移植性(portability) 的
影响。
: 我只想说,
: 不能因为微软都帮你处理好了就笨笨的去用那些封装method,
: 结果变成只会用,但不知道为何的程式设计师,
: 有时候土法炼钢也是能学到不少东西。
「追根究底」与「土法炼钢」是不同的;在你举的例子里,若对 Environment.NewLine
的实作有疑惑,可以选择用 ildasm.exe 把 mscorlib.dll 打开来看
,或可看其原始码 (
http://referencesource.microsoft.com/ )
public static String NewLine {
get {
Contract.Ensures(Contract.Result<String>() != null);
#if !PLATFORM_UNIX
return "\r\n";
#else
return "\n";
#endif // !PLATFORM_UNIX
}
}
都是更为积极、正面的研究办法
: 如果觉得这举例不好,那过几天後我看看情况自删文章,
: 反正贴code还会被认为误导,以後打嘴炮就好,
: 反正用说的比用实作举例简单多了。
http://en.wikipedia.org/wiki/Hasty_generalization
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 68.4.199.75
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1420063539.A.951.html
补充八卦
有用过 Windows 95/98 的人有可能记得,在手动安装系统时,是从
一个世界地图上选择使用者所在的的时区。後来的 2000/XP/Vista/7/8
就没这麽作了,变成了从下拉式选单选取时区。
「从直觉的世界地图改成下拉式选单」背後的原因传说是政治压力。
在一些有领土边界争议的地区,不论是把该地区在使用者看到的萤幕
上划分给任何一方,都不是技术问题,而是政治问题 :D 所以,就乾
脆拿掉这设计,改成依字母顺序排列的时区选单。
是故,时区、货币、语言语系这类东西,能推给 framework 去处理
是最好,让微软去坦那些问题吧 :D
※ 编辑: AmosYang (68.4.199.75), 01/01/2015 06:26:37
※ 编辑: AmosYang (68.4.199.75), 01/01/2015 07:08:01
1F:推 YahooTaiwan: 推给微软 这个观点我喜欢 XDD 01/01 15:40
2F:推 GoalBased: 原来还有这种八卦XD 01/01 17:56
3F:→ fireslayer: 现在蛮多linux dist的安装也是用点的说 01/01 22:57
4F:→ fireslayer: 虽然opensource可能比较不怕政治压力就是.. 01/01 22:58
5F:→ uranusjr: 别说 Linux 了, OS X 也是用点的啊... 01/02 00:45
Windows 树大招风;且政府、企业、 OEM 是 Windows 的主战场,
自然要向决策者示好,和气生财 :p
※ 编辑: AmosYang (68.4.199.75), 01/02/2015 04:04:57
6F:→ andymai: 也不算是树大招风吧?要开发作业系统~这也是不得不考虑进 01/02 09:00
7F:→ andymai: 去的事啊~尤其是他又不可能只吃一个国家的市场... 01/02 09:01
举个现实的例子
* 欧盟裁定 Microsoft Windows 自 2009 起必须在 Windows 里提
供「网路浏览器安装选单」,因为 MS IE 有「不公平的竞争优势」
(罚款 500M+ 欧元)
同时,苹果在 iOS 与 OS X 中给予 Safari 特别待遇, 但没有受
到任何管制
从技术面来看,会真正在乎且能真正分辨出各家浏览器在功能与外观
异同者,并不需要这样一个「安装选单」;此乃树大招风之实例。
============================================================
另一个偏向我个人主观认知的例子
在闲聊瞎扯 Windows vs. Linux / OS X 时,常常会把「安全性」也
拿出来扯;然而,十次里面有九次,参与讨论者是连 Mitre CVE database
都没听过的人
http://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures
最後通常会开始干谯 Windows / IE / Office 安全性如何如何差,
无视其他 OS 及软体一样有各式各样大大小小的安全性问题
我将这现象归纳於树大招风; 盲从追打 ____ 就是潮 :D
( ____ 可填入微软、苹果、谷歌等各大厂牌、品牌皆可)
※ 编辑: AmosYang (68.4.199.75), 01/02/2015 11:53:12
8F:→ james732: 国家、时区用拉的超麻烦啊..... 01/04 14:56