Re: [問題] 新手學C#,有關{get;set;}的疑問
※ 引述《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://www.ptt.cc/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
推
01/01 15:40, , 1F
01/01 15:40, 1F
推
01/01 17:56, , 2F
01/01 17:56, 2F
→
01/01 22:57, , 3F
01/01 22:57, 3F
→
01/01 22:58, , 4F
01/01 22:58, 4F
→
01/02 00:45, , 5F
01/02 00:45, 5F
Windows 樹大招風;且政府、企業、 OEM 是 Windows 的主戰場,
自然要向決策者示好,和氣生財 :p
※ 編輯: AmosYang (68.4.199.75), 01/02/2015 04:04:57
→
01/02 09:00, , 6F
01/02 09:00, 6F
→
01/02 09:01, , 7F
01/02 09:01, 7F
舉個現實的例子
* 歐盟裁定 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
→
01/04 14:56, , 8F
01/04 14:56, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章