【发布时间】:2011-06-01 06:53:48
【问题描述】:
我一直在阅读《框架设计指南》一书,这是一本关于在 .NET 中设计框架的书,其中摘录了框架设计人员关于他们对每个部分(例如参数设计、异常处理等)做出的决定的摘录。
在参数设计下,其中一个技巧是尽可能“在调用堆栈上”验证参数。这是因为这里的工作并不像调用堆栈中的低端那样昂贵,因此在调用堆栈的高端进行验证时性能损失不会那么高。
这是否意味着当我将参数传递给方法或构造函数时,我会在执行任何其他操作之前验证它们,还是在使用参数之前这样做(因此定义中的参数之间可能有 100 行代码以及参数的用法)?
谢谢
【问题讨论】:
-
我相信您的第一个结论是正确的,请在最后可能的情况下验证它,其中值可能会以一种会对性能产生不利影响或导致问题的方式进行更改。
-
是的,你是对的,即首先验证然后执行代码(阅读按合同设计模式。)好处很简单。例外是昂贵的,尤其是当它们通过层冒泡时。所以先验证参数再执行代码是一种很好的做法。
-
这是刚传入还是刚使用前?
标签: c# parameter-passing callstack