首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DataService数据存储

DataService数据存储
EN

Code Review用户
提问于 2014-04-08 12:42:33
回答 1查看 67关注 0票数 1

我有一个DataService,它应该与服务器对话并存储vars (例如,对于复杂的调用)。

上一次,我使用了这种方法(举个例子,我正在处理一个列表):

  • GetList() -返回缓存的数据(只是一个属性)
  • SetList() -设置属性
  • ReadList() -从IsoStorage读取文件中的数据
  • WriteList() -将数据写入文件
  • PullList() -从服务器中提取数据
  • PushList() -将数据推送到服务器

注:我正在使用我的旧的IsoStorage方法(IsoSettingsManager)。

现在,过了一段时间,我明白了我可以合并前两个阶段:缓存和写入IsoStorage。现在我在想一些事情

代码语言:javascript
运行
复制
    private int? deliveryId = null;
    public int DeliveryId
    {
        get { return deliveryId ?? IsoSettingsManager.GetProperty<int>("DeliveryId"); }
        set { deliveryId = value; IsoSettingsManager.SetProperty("DeliveryId", value); }
    }

其中设置属性为

代码语言:javascript
运行
复制
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返回设置好的值,这样我就可以像

代码语言:javascript
运行
复制
public int DeliveryId
{
    set { deliveryId = IsoSettingsManager.SetProperty("DeliveryId", value); }
    ***

撤销DeliveryId = null;并不适用于ints (很公平),而且我还无法找到如何有效地推拉它们。

EN

回答 1

Code Review用户

发布于 2014-11-03 15:47:09

风格

如果您也对单个{}语句使用大括号if,那么它不会伤害您,也不会使您的代码更容易出错。

注释代码(// if (isoSettings.Contains(propertyName)) isoSettings.Remove(propertyName);)应该被完全删除。您应该使用像svn或git这样的代码版本控制系统。

根据以下评论进行更新

它不是关于评论,而是关于注释掉的代码,这只是死代码。什么值有死代码?它是使您的活动代码更易读,还是使您的活代码更容易理解?不,恰恰相反。

Asume:

代码语言:javascript
运行
复制
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。

这反而

代码语言:javascript
运行
复制
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时,您只需做同样的操作。

您应该考虑在移除该属性之后返回。没有必要保存设置。

SetProperty()返回设置值

在我看来,这是一个坏主意,因为这个方法看起来像一个属性设置者。属性设置程序只应设置属性值。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/46637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档