【发布时间】:2010-04-20 13:17:06
【问题描述】:
与an earlier question of mine 部分相关,我有一个系统,我必须将复杂数据存储为字符串。我没有将这些字符串解析为各种单独的对象,而是创建了一个包含所有这些对象的类,它具有一些解析器逻辑,可以将所有属性编码为字符串,或解码字符串以获取这些对象。这一切都很好。这个问题不是关于解析器本身,而是关于我应该在哪里存放解析器的逻辑。将其作为属性还是作为方法是更好的选择吗?
对于属性,比如public string DataAsString,get 访问器将包含将所有数据编码为字符串的逻辑,而set 访问器将解码输入值并设置所有类实例中的数据。看起来很方便,因为输入/输出确实是一个字符串。
在方法的情况下,一个方法是Encode(),它返回编码字符串。然后,要么构造函数本身包含解码字符串的逻辑并需要字符串参数,要么我编写一个单独调用的Decode(string str) 方法。无论哪种情况,都将使用方法而不是属性。
那么,就代码的实际运行而言,这些路径之间是否存在功能差异?还是它们基本上是等效的,然后归结为个人喜好的选择,或者哪个看起来更好?在那种问题中……无论如何,哪个看起来更干净?
【问题讨论】:
标签: c# properties methods class-design