![]() |
1
0
提供满足某些条件的参数的要求是 Design by Contract ,即它对应于先决条件。客户端(在您的案例中是构造函数的客户端)应该保证参数如预期的那样。如果不是这样,则供应商(您案例中的构造函数)无法确保生成的对象在构造函数返回后处于有效状态。在本机支持契约式设计的语言中,人们会关联一个类不变量,说明名称不是空的,并且电子邮件地址遵循命名约定。只有当传递给构造函数的参数有效时,才能实现这一点。 您提到的条件将作为先决条件编写,可以根据软件开发过程中制定的策略打开或关闭。启用后,在执行构造函数的实体之前,在进入构造函数时检查它们。从这个角度来看,您的代码没有做任何额外的工作,但要确保参数是正确的。在确保始终满足先决条件的程序验证,或给人以客户未违反先决条件感觉的广泛测试之后,可以禁用它们,从而删除任何“额外工作”。
|
![]() |
2
0
不,验证参数和输入对于所有函数都至关重要,包括构造函数。在没有检查/错误处理的情况下盲目设置参数可能会导致严重问题,从意外的性能到恶意参与者以非预期方式操纵程序的能力。 |
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |