gpt4 book ai didi

c# - 如何验证调用堆栈上的参数 "high up"?

转载 作者:太空狗 更新时间:2023-10-30 00:27:57 27 4
gpt4 key购买 nike

我一直在阅读 Framework Design Guidelines 一书,这是一本关于在 .NET 中设计框架的书,其中摘录了框架设计者对每个部分(例如参数设计、异常处理等)所做的决定。

在参数设计下,其中一个技巧是尽可能“在调用堆栈的高层”验证参数。这是因为这里的工作并不像它在调用堆栈中的低层那样昂贵,因此在调用堆栈的高处进行验证时,性能损失不会那么昂贵。

这是否意味着当我将参数传递给方法或构造函数时,我会在执行任何其他操作之前验证它们,或者我是在使用参数之前验证它们(因此定义中的参数之间可能有 100 行代码以及参数的用法)?

谢谢

最佳答案

  1. 更喜欢在程序集的公共(public) API 中进行验证。这意味着公共(public)类的公共(public)方法。

  2. 更喜欢在类的公共(public)方法中进行验证。因此,如果您的类需要一个指向另一个对象的非空指针才能正常工作,您可以通过将其作为构造函数参数并在提供空指针时抛出异常来强制执行此操作。从那时起,所有成员方法都不需要测试指针是否为非空。

这个想法是没有用户可以通过提供无效数据来破坏您的类(或程序集)。当然,代码不会以任何方式工作,但如果您以受控方式失败,调用代码就会更清楚哪里出了问题,并且您不会有资源泄漏(或更糟)等令人不快的副作用。

关于c# - 如何验证调用堆栈上的参数 "high up"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558200/

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