C_Sharp 板


LINE

提供一点我个人的实作经验: Field:供class内部使用; Property:供class外部使用。 我举个简单的例子,我想你在写网页也常会遇到的问题, 时间转换的问题。 public class Game { private DateTime GreenwichMeanTime = DateTime.UtcNow; //public DateTime GreenwichMeanTime //{ // get { return DateTime.UtcNow; } // private set; //} public DateTime TaiwanTime { get { return this.GreenwichMeanTime.AddHours(8); } set { this.GreenwichMeanTime = value.AddHours(-8); } } public DateTime JapanTime { get { return this.GreenwichMeanTime.AddHours(9); } set { this.GreenwichMeanTime = value.AddHours(-9); } } public void Delay3Second() { this.GreenwichMeanTime = this.GreenwichMeanTime.AddSeconds(-3); } } GMT是class内部在用的时间, 不管你是要加减乘除,还是要作任何运算,在class内部就是GMT。 当有其他client用时间的时候, 不管是选择日本时间还是台湾时间,基本上都是GMT。 在JAVA早期,我要存取某个变数时, 为了要保持封装的特性,就会另外写GetTaiwanTime、SetTaiwanTime, 再抽像做成介面的时候,这些Get、Set会另外抽起来做成「属性介面」, 而public method也会另外抽起来做成「方法介面」, 属性介面+方法介面=class介面。 讲那麽多,还是回到最上面的那两句话, Field:供class内部使用; Property:供class外部使用。 人话一点就是 Property:金玉其外,其他class看到你的模样。 Filed:败絮其内,自己看到自己的模样。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.249.117.38
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1419559087.A.D6C.html
1F:→ AmosYang: 就「时区转换」来说,还是别土法链钢…参考一下 12/26 11:40
2F:→ AmosYang: TimeZoneInfo 及 DateTimeOffset 吧 12/26 11:40
是我表达有问题吗?「举例」的重点是在TimeZoneInfo? 我怎麽觉得我是在讨论Field与Property。 个人对於用不用TimeZoneInfo没什麽想法, 但是「时区转换」用TimeZoneInfo就比较高尚吗? 单纯的用加减时数就比较老旧吗? 我所学到的是,不管方法如何,要因时因地的用才是好方法, 用某某方法比较好的说法,我抱持怀疑。
3F:→ andymai: 一楼也只是好心说一下吧~而且问题不是在於什麽高不高尚 12/27 12:53
4F:→ andymai: 人家好心回答也没带情绪~却换来这样的回应~那还有谁想回? 12/27 12:54
我的回答也没有情绪, 时区转换用哪种方式不是讨论重点,要讨论时区转换可以另PO文章讨论。 我的问题都只是问题, 土法炼钢就不是好方法?TimeZoneInfo就比较高尚? 这两种我都会用,某篇说的日光节约我转过、也知道, 但我还是很想问, 「什麽时候程式有高不高尚的写法?」 Object-Oriented Programming 比 Procedural Programming 高尚? Service-Oriented Programming 比 Object-Oriented Programming 高尚? 我还是认为因时因地的程式才是好程式。 这里的举例就只是个举例,并不含其他因素, 如果要加入其他因素,那讨论就会偏掉。
5F:→ andymai: 人家也只是好心提一下啊~"高不高尚"的论点是你自己提的~ 12/29 12:54
6F:→ andymai: 不是吗?人家只是考量到别的使用情境~哪有说比较高尚?因时 12/29 12:58
7F:→ andymai: 因地的当然应该赢广泛设计式的程式~毕竟都"客制化"了... 12/29 12:59
所以我说,果然接下来的推文就歪串了。 结果都不是在讨论Field与属性,哎… 当举例参杂别的考量,你会去说举例有误? 那我觉得以後版上没人敢贴code了。 如同有人问说如何在textBox换行, 某人回答 \r\n,後来有人很回说用 Environment.NewLine, 然後还说 \r\n 别土法炼钢,建议用 Environment.NewLine比较好, 我很想问,有差吗? 我只想说, 不能因为微软都帮你处理好了就笨笨的去用那些封装method, 结果变成只会用,但不知道为何的程式设计师, 有时候土法炼钢也是能学到不少东西。 如果觉得这举例不好,那过几天後我看看情况自删文章, 反正贴code还会被认为误导,以後打嘴炮就好, 反正用说的比用实作举例简单多了。 ※ 编辑: StupidGaGa (60.249.117.38), 12/31/2014 18:28:23
8F:→ andymai: 都说了人家只是好心提醒,偏偏要想那麽多... 12/31 23:05







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP