微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

面向对象的模式和/或“自我修复”的结构化方法?

我参与的许多Web应用程序项目都达到了

>应用程序期望持久化的数据采用特定格式
>如果持久数据偏离该格式,应用程序将禁止
>旧的“神秘代码”以错误的格式保存数据

这通常导致应用程序开发人员使用大量的验证条件使模型代码混乱.那是

function save()
{
    if($model->getSomeProp() == 'bad value')
    {
        $model->setSomeProp('good default value');
    }

    return parent::save();
}        

是否有更好的模式和/或系统来处理这些情况,而这些模式和/或系统不依赖于让开发人员为每个版本编写完善的迁移脚本和/或验证代码?我特别感兴趣的是其他开发人员如何解决这些(根据我的经验)常见的长期问题.

专门寻找LAMP Stack / PHP解决方案,但是非常欢迎其他常见中间件语言/平台(ruby,python等)的解决方案和方法.

解决方法:

我们使用配置文件提供的步骤清单,该清单应在每个处理的项目上执行.这样就可以进行验证,对数据进行少量更改,查找,从外部资源中检索和合并某些属性等.

尽管现在它基于一组实现抽象Step的Ruby类,并根据yaml配置工作,但我认为在下一次重写中,我将使用纯Ruby DSL.

因此,最后,您将获得以下内容

HealingProcessor.on(impure_data) {
  replace_bad_value :field => :some_prop, :bad_value => 'bad value', :good_value => 'good_default_value'
  # etc
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐