业务验证逻辑代码异味

2023-11-26

考虑以下代码:

partial class OurBusinessObject {
    partial void OnOurPropertyChanged() {
        if(ValidateOurProperty(this.OurProperty) == false) {
            this.OurProperty = OurBusinessObject.Default.OurProperty;
        }
    }
}

也就是说,当值OurProperty in OurBusinessObject更改后,如果该值无效,请将其设置为默认值。这种模式让我觉得代码有味道,但这里的其他人(我的雇主)不同意。你怎么看?

编辑添加:我被要求添加一个解释,解释为什么这被认为是可以的。这个想法是,业务对象可以验证其自己的属性,并在验证失败时设置干净的默认值,而不是让业务对象的生产者验证数据。此外,人们认为,如果验证规则发生变化,业务对象生产者不必更改其逻辑,因为业务对象将负责验证和清理数据。


这绝对是可怕的。祝您尝试调试生产中的问题好运。它唯一可能导致的就是掩盖错误,这些错误只会在其他地方突然出现,而它们的来源根本不明显。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

业务验证逻辑代码异味 的相关文章

随机推荐

  • 如何在 Swift 5 中添加滚动视图?

    我想在我的项目中添加滚动视图 但在 swift 5 中我无法添加它我尝试了很多方法 IBOutlet weak var scrollView UIScrollView IBOutlet weak var imageViewBottomCon
  • 使 mat-card-image 中的所有图像大小相同但比例正确

    这通常不是问题 但只是 Material 2 的记录很少 所以我很难使所有图像具有相同的尺寸 但可以通过窗口更改正确调整大小 当我创建时 我拥有的所有图像的大小都非常相似 但其中一个在高度方面稍长一些 但我的旧代码只是通过一些引导调用进行了
  • Android如何在没有onDown true的情况下在LinearLayout上添加滑动手势

    我正在研究 android 中的手势活动 我使用类来检测滑动动作是 public class ActivitySwipeDetector implements View OnTouchListener static final String
  • 在操作系统中,Ring 0 和 Ring 3 是什么?

    我一直在学习有关 Windows 中驱动程序开发的基础知识 我不断地查找术语Ring 0 and Ring 3 这些指的是什么 它们是一样的吗内核模式 and 用户模式 Linux x86 环使用概述 了解环在 Linux 中的使用方式将使
  • “潜在评估”与 C++03 中的“odr-used”意思相同吗?

    举个例子 include
  • 在多语言网站中使用 PHP Gettext 扩展与 PHP 数组?

    到目前为止 我所看到的使用 gettext 而不是数组的唯一两个好处是我不必创建 问候语 子数组 或任何其名称 而且我不必为 默认语言 创建文件夹 对于多语言网站使用 gettext 和 php 数组还有其他优点和缺点吗 使用 gettex
  • 仅用于内容文件的 Nuget 包

    我正在尝试创建一个 NET 标准 nuget 内容文件包 没有托管程序集 以供 NET Framework 程序集使用 我的目标是将这个文件文件夹复制到使用程序集的 bin 文件夹中 这个问题是类似的将 NuGet 包中的本机文件添加到项目
  • 检查标记是否在视图中(地图)-mapbox

    I want to check if marker is on mapview or out of the map I am putting marker of the map and not able to check if it on
  • 如何修改粘贴的数据? jQuery

    我关注了这个问题JavaScript 在粘贴事件上获取剪贴板数据 跨浏览器 从剪贴板获取粘贴的数据 但我使用了jquery 现在我得到了数据 我删除了所有 html 标签 但我不知道怎么粘贴 element is a contentedit
  • 在预定的heroku dyno中访问heroku toolbelt命令?

    我想在预定的heroku任务中调用heroku postgres备份 恢复命令 但是heroku工具带在bash提示符下不可用 所以我无法调用heroku命令 heroku run bash app myapp Running bash a
  • 允许特殊字符 SQL Server 2008

    我使用的是 SQL Server 2008 Express 版本 其排序规则设置设置为默认值 我希望在数据库中存储特殊字符 如 但它会将它们转换为普通字符 如 A 如何阻止 SQL Server 这样做 确保您的列使用类型 nvarchar
  • 在 flutter 中获取设备 IMEI

    我怎样才能获得设备IMEI颤动中 我正在尝试使用以下插件获取唯一标识符 uuid type 0 7 0 dev uuid 1 0 3 unique identifier 0 0 3 flutter udid 0 0 3 他们都获得 ID 但
  • Android imageview 显示绿色图像

    这是原始图像 这是使用 ImageView 渲染的图像 然而 有时当图像在轮播中时 滑回图像可能会导致图像正确渲染 这更奇怪 在 LG G3 Android 5 1 和 Genymotion Android 4 4 4 上均观察到此行为 我
  • 在 IE9+ 上显示 base64 pdf 的解决方法

    我想将 PDF 转换为 base64 并在浏览器上显示 问题是 以下代码适用于 Firefox 和 Chrome For IE usi
  • 如何使用 Axios 从表单发布文件

    使用原始 HTML 当我使用以下命令将文件发布到 Flask 服务器时 我可以从 Flask 请求全局访问文件
  • 在 JComboBox 中显示图像

    我需要在 JComboBox 中显示图像 只需向模型添加一个图标而不是字符串 import java awt import javax swing public class ComboBoxIcon extends JFrame JComb
  • 如何在Android中使用TextWatcher类?

    谁能告诉我如何屏蔽子串 in EditText或如何改变EditText 密码类型的子字符串输入 or replace由另一个特点像这样 123xxxxxxxxx3455 String contents et1 getText toStri
  • 安全地将 JSON 字符串转换为对象

    给定一个 JSON 数据字符串 如何安全地将该字符串转换为 JavaScript 对象 显然 我可以通过以下方式不安全地做到这一点 var obj eval json 但这让我很容易受到包含其他代码的 JSON 字符串的影响 简单地评估这些
  • IDEA 的 CheckStyle 插件 - java 方式的警告呈现和自动修复?

    是否可以使其显示 java spellchecker 风格的警告列表 而不是带有行号的旧式错误列表 它可以自动修复 附近缺少空格等问题吗 也许我需要一个不同的插件 那么哪个呢 Try QAPlug 检查样式插件 然后进入 分析 分析代码 不
  • 业务验证逻辑代码异味

    考虑以下代码 partial class OurBusinessObject partial void OnOurPropertyChanged if ValidateOurProperty this OurProperty false t