※ 引述《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