界面设计的最佳实践



我想知道哪个版本是最好的版本。参数是具有2个可能值的状态。这是实际问题的抽象示例。我正在用一种程序性(无课程(进行编程,并且没有键入变量。我刚刚读了一篇文章,说1版1对可读性和呼叫者不利。我个人也不喜欢版本2。也许有更好的选择?

版本1:

doSth(par1, par2)

  • 不是冗余

  • 任务

  • 的单一方法
  • 更复杂的实现 -

  • 可以轻松传递错误的参数 -

版本2:

doSthWithPar1Is1AndPar2Is1() 
doSthWithPar1Is1AndPar2Is2() 
doSthWithPar1Is2AndPar2Is1() 
doSthWithPar1Is2AndPar2Is2()
  • 冗余 -

  • 太多方法(尤其是更多参数( -

  • 长方法名称 -

  • 简单实现

  • 没有可以通过错误的参数

鉴于您已经考虑了V1可行的告诉我,不同的参数值组合在处理值的处理方面具有共同点。

在V2中,您只需要输入和阅读更多内容,我会说这是引入错误/错误并失去要求的最常见原因。

在V2中,您必须重复单个实现中常见的内容,如果犯错,总体逻辑充其量将充其量不一致。如果要修复它,则可能必须在多个地方修复它。

但是,您可以基于V1优化代码安全:为程序选择更多的"冗长"名称,例如

doSomethingVerySpecificWithPar1OfTypeXAppliedToPar2OfTypeY(par1, par2)

(我有点夸张...(,所以您立即看到了您最初的意图。

您甚至可以从V2中汲取最好的功能并介绍单个功能,这些功能只需重定向到V1的共同函数(因此您避免了冗余(。清晰的增长几乎总是超过效率的轻微损失。

doSthWithPar1Is1AndPar2Is1()
{
    doSomethingVerySpecificWithPar1OfTypeXAppliedToPar2OfTypeY(1, 1);
}

永远记住戴维·惠勒(David Wheeler(:"计算机科学中的所有问题都可以通过另一个间接级别来解决"。

btw:我不认为长长的方法是一个问题,而是一个好处(当然要达到一定长度(。

最新更新