首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发配置语法-最佳实践/规则/方法?

开发配置语法-最佳实践/规则/方法?
EN

Software Engineering用户
提问于 2014-08-25 09:37:11
回答 4查看 122关注 0票数 0

我目前正在开发一个小应用程序,它检查提供的数据是否满足某些要求。需求实际上是一个很长的列表,并且可能会发生变化,所以我定义了一个语法,允许我在一个单独的文件中简短地陈述所有的需求。

现在,应用程序的总体需求发生了变化,我需要更改配置语法。这使我怀疑是否有方法或最好的实践来发展这样的语法。目前我所做的是

  • 我考虑了需求并提出了一个初步的语法,
  • 开始配置前几个项目,看看它是如何工作的。
  • 如果我遇到一些不能很好地工作或与当前语法完全不兼容的东西,我会更改语法,如果可能的话,以向后兼容的方式进行。

这在某种程度上适用于我,但感觉有点像在混水摸鱼。而且,我觉得这并不能带来最简洁和易于理解/使用的语法。

所以我想知道其他人做什么,特别是如果有更好的方法来解决这个问题。

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2014-08-25 09:41:16

我的经验是,不值得花费太多的时间来完善表达需求的语法。

需求将再次发生变化,而且很可能是以您没有预料到的方式改变的,因此您不太可能在任何合理的时间框架内找到完美的解决方案。在处理遗留数据时,通常更容易保留旧的解析代码作为回调的后盾,如果有必要,甚至会出现一系列这样的回退。它看起来有点难看,但是向后兼容性很差,如果代码反映了这一点的话,我认为它是可以的,只要每种不同的解析策略都是相当好的。

票数 2
EN

Software Engineering用户

发布于 2014-08-25 13:19:07

大多数语言都有某种类型的验证库可供您使用。例如,在C#中,我使用了FluentValidation,它允许您使用fluent API指定业务规则。

代码语言:javascript
复制
public class Post
{
    public string Title;
    public string Body;
    public DateTime CreatedAt;
}

而验证者:

代码语言:javascript
复制
public class PostValidator : BaseValidator<Post>
{
    public PostValidator()
    {
        RuleFor(p => p.Title)
            .NotEmpty()
            .Length(1,50);

        RuleFor(p => p.Body)
            .NotEmpty();
    }
}

建议使用类似的方法,特别是因为这些验证库中有许多是单元可测试的。

票数 1
EN

Software Engineering用户

发布于 2014-08-25 13:52:20

这似乎是XML工作良好的一种情况。您可以从需要的基本标记开始,或者是给定的长度等;如果稍后您获得了需要新的约束类型的新需求,只需添加一个标记和代码来检查该标记。

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

https://softwareengineering.stackexchange.com/questions/254355

复制
相关文章

相似问题

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