配置文件-软件一大杀手

软件升级过程中,要保留用户的软件配置。软件升级后配置文件的内容可能变化,防止变化的内容造成软件出现异常。

需求更改前:SNMP响应时间配置范围是1到100s,响应询问次数是1到10次。
用户配置: 30s, 5次;

配置文件类更改前:

[Serializable]
class SnmpSettings
{
    internal static readonly string DefaultFilePath = Path.Combine(Application.StartupPath, "#SnmpSettings.bin");

    private int millisecondsTimeout = 200;
    private int retryTime = 5;

    public int MillisecondsTimeout
    {
        get { return millisecondsTimeout; }
        set { millisecondsTimeout = value; }
    }

    public int RetryTime
    {
        get { return retryTime; }
        set { retryTime = value; }
    }
}

需求更改后:需求:SNMP响应时间配置范围是1到10s,响应询问次数是1到10次。
用户配置: 30s, 5次 => (30s >10s 超出新需求的配置范围);
原先只在客户端控件上检验用户输入的范围,导致在读取用户配置文件赋值到控件上时,超出了设置范围:

【ArgumentOutOfRangeException: “30000”的值对于“Value”无效。“Value”应介于 'Minimum''Maximum' 之间。
参数名: Value

软件出现异常,异常对用户来说都是致命的,即使是一个很小的错误也会被认为是很严重的问题,这是认知层次的问题。

配置文件类更改后:

[Serializable]
class SnmpSettings
{
    private const int MillisecondsTimeoutMinValue = 1;
    private const int MillisecondsTimeoutMaxValue = 10000;
    private const int RetryTimeMinValue = 1;
    private const int RetryTimeMaxValue = 10;
    internal static readonly string DefaultFilePath = Path.Combine(Application.StartupPath, "#SnmpSettings.bin");

    private int millisecondsTimeout = 200;
    private int retryTime = 5;

    public int MillisecondsTimeout
    {
        get
        {
            if (millisecondsTimeout < MillisecondsTimeoutMinValue)
            {
                millisecondsTimeout = MillisecondsTimeoutMinValue;
            }
            else if (millisecondsTimeout > MillisecondsTimeoutMaxValue)
            {
                millisecondsTimeout = MillisecondsTimeoutMaxValue;
            }
            return millisecondsTimeout;
        }
        set
        {
            if (value < MillisecondsTimeoutMinValue)
            {
                millisecondsTimeout = MillisecondsTimeoutMinValue;
            }
            else if (value > MillisecondsTimeoutMaxValue)
            {
                millisecondsTimeout = MillisecondsTimeoutMaxValue;
            }
            else
            {
                millisecondsTimeout = value;
            }
        }
    }

    public int RetryTime
    {
        get
        {
            if (retryTime < RetryTimeMinValue)
            {
                retryTime = RetryTimeMinValue;
            }
            else if (retryTime > RetryTimeMaxValue)
            {
                retryTime = RetryTimeMaxValue;
            }
            return retryTime;
        }
        set
        {
            if (value < RetryTimeMinValue)
            {
                retryTime = RetryTimeMinValue;
            }
            else if (value > RetryTimeMaxValue)
            {
                retryTime = RetryTimeMaxValue;
            }
            else
            {
                retryTime = value;
            }
        }
    }
}

在类中进行范围限制,解决前期版本配置文件内容引起异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值