gpt4 book ai didi

c# - 层次结构违反了 Liskov - 那又怎样?

转载 作者:太空狗 更新时间:2023-10-29 20:14:36 25 4
gpt4 key购买 nike

我使用的 API 违反了 Liskov 替换原则:它抛出自己的扩展 Exception 的异常类型,但将来自基类的异常消息放在新的 ErrorCode 字段中,并将自己的(无用的)消息放在 Message 中 field 。因此,为了显示正确的消息,我需要将 Exception 转换为 DerivedException 类型并使用 ErrorCode 字段。如果我将其视为异常对象,则会收到错误消息。

现在这在风格层面上让我感到厌烦,但它很容易绕过:我可以捕获 DerivedException 并按照程序员的预期使用它。所以我的问题是:Liskov 原则有什么大不了的?人们使用违反原则的等级制度可能会遇到哪些实际问题?

最佳答案

一个实际的例子:

如果您有一个带有LogException(Exception ex) 方法的日志记录类,它将记录您认为无用的消息,而不是“真实”消息。

日志方法的描述将从“记录异常消息”变为“记录异常消息,但有时会记录无用的消息”。

关于c# - 层次结构违反了 Liskov - 那又怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com