我有一个DataService
,它应该与服务器对话并存储vars (例如,对于复杂的调用)。
上一次,我使用了这种方法(举个例子,我正在处理一个列表):
GetList()
-返回缓存的数据(只是一个属性)SetList()
-设置属性ReadList()
-从IsoStorage
读取文件中的数据WriteList()
-将数据写入文件PullList()
-从服务器中提取数据PushList()
-将数据推送到服务器注:我正在使用我的旧的IsoStorage
方法(IsoSettingsManager)。
现在,过了一段时间,我明白了我可以合并前两个阶段:缓存和写入IsoStorage
。现在我在想一些事情
private int? deliveryId = null;
public int DeliveryId
{
get { return deliveryId ?? IsoSettingsManager.GetProperty<int>("DeliveryId"); }
set { deliveryId = value; IsoSettingsManager.SetProperty("DeliveryId", value); }
}
其中设置属性为
public static void SetProperty(string propertyName, object content)
{
if (System.ComponentModel.DesignerProperties.IsInDesignTool)
return;
if (content == null)
RemoveProperty(propertyName); // if (isoSettings.Contains(propertyName)) isoSettings.Remove(propertyName);
isoSettings[propertyName] = content;
isoSettings.Save();
}
你觉得那个怎么样?
我想到的第一件事就是让SetProperty
返回设置好的值,这样我就可以像
public int DeliveryId
{
set { deliveryId = IsoSettingsManager.SetProperty("DeliveryId", value); }
***
撤销DeliveryId = null;
并不适用于int
s (很公平),而且我还无法找到如何有效地推拉它们。
发布于 2014-11-03 15:47:09
如果您也对单个{}
语句使用大括号if
,那么它不会伤害您,也不会使您的代码更容易出错。
注释代码(// if (isoSettings.Contains(propertyName)) isoSettings.Remove(propertyName);
)应该被完全删除。您应该使用像svn或git这样的代码版本控制系统。
根据以下评论进行更新
它不是关于评论,而是关于注释掉的代码,这只是死代码。什么值有死代码?它是使您的活动代码更易读,还是使您的活代码更容易理解?不,恰恰相反。
Asume:
public static void SetProperty(string propertyName, object content)
{
//if (System.ComponentModel.DesignerProperties.IsInDesignTool)
// return;
//if (content == null)
RemoveProperty(propertyName); // if (isoSettings.Contains(propertyName)) isoSettings.Remove(propertyName);
isoSettings[propertyName] = content;
isoSettings.Save();
}
这是相当难理解和低估的Mr.Maintainer。
这反而
public static void SetProperty(string propertyName, object content)
{
RemoveProperty(propertyName);
isoSettings[propertyName] = content;
isoSettings.Save();
}
更好的理解。
如果您将某些内容签入svn/git,则始终应该向提交中添加描述性消息。
SetProperty()
方法if (content == null) RemoveProperty(propertyName);// if (isoSettings.Contains(propertyName)) isoSettings.Remove(propertyName);isoSettingspropertyName = content;isoSettings.Save();
这对我来说毫无意义。如果content==null
,首先删除该属性,然后添加它。下一次通过null
时,您只需做同样的操作。
您应该考虑在移除该属性之后返回。没有必要保存设置。
在我看来,这是一个坏主意,因为这个方法看起来像一个属性设置者。属性设置程序只应设置属性值。
https://codereview.stackexchange.com/questions/46637
复制相似问题