从命令行填充对象并检查对象状态

时间:2016-10-28 11:35:54

标签: oop

我根据命令行输入的用户填充对象。 对象需要有一定数量的数据才能继续。到目前为止,我的解决方案是嵌套if语句来检查对象是否准备就绪。如下例所示。 也许3个if语句不是很糟糕(?)但是如果if语句的数量开始增加怎么办?这里有什么替代方案?让我们说X,Y和Z是三个完全不同的东西。例如,让我们说object.X是一个整数和object的列表.Y是一个字符串,也许Z是某种布尔值,只有当object.Y有一定数量的值时才返回true? 我不确定多态会在这种情况下有效吗?

do
    {
        if (object.HasX)
        {
            if (object.HasY)
            {
                if (object.HasZ)
                {
                    //Object is ready to proceed.
                }
                else
                {
                   //Object is missing Z. Handle it...
                }
            }
            else
            {
               //Object is missing Y. Handle it...
            }
        }
        else
        {
           //Object is missing X. Handle it...
        }
} while (!String.IsNullOrEmpty(line));

1 个答案:

答案 0 :(得分:1)

对于复杂的逻辑工作流程,我发现,可维护性决定逻辑应该采用哪种抽象级别。

是否必须定期添加新的逻辑/解析规则?

不幸的是,没有办法避免必须做明确的条件,他们必须住在某个地方。

有些可以帮助保持清洁的事情可能是:

  • 主要功能只负责将命令行参数转换为本机数据类型,然后将逻辑推送到对象构建器类,这将使主函数保持稳定和不变,除了添加标志描述,这应该保持逻辑输出域的,并集中到构建器抽象
  • 主要功能负责解析和配置域,这隔离了主/解析函数中的所有混乱条件,并将逻辑保留在域模型之外
  • 压扁逻辑if not object.hasX; return,下一步你知道has.X,这仍然会有一个条件列表,但会更平坦
  • 创建DSL声明性规则语言(展平时更明显)。这可能是规则处理器,逻辑存在,然后外部主要功能可以定义继续进行所需的状态