界面设计的最佳实践

Best practice for interface design

我想知道哪个版本最适合实施。 参数是具有 2 个可能值的状态。 这是实际问题的抽象示例。 我正在使用一种程序语言进行编程(没有 类)并且没有类型变量。 我刚刚读了一篇文章,指出版本 1 不利于可读性和调用者。我个人也不喜欢版本 2。也许有更好的选择?

版本 1:

doSth(par1, par2)

版本 2:

doSthWithPar1Is1AndPar2Is1() 
doSthWithPar1Is1AndPar2Is2() 
doSthWithPar1Is2AndPar2Is1() 
doSthWithPar1Is2AndPar2Is2()

鉴于您已经认为 V1 可行告诉我,不同的参数值组合在如何处理值方面有一些共同点。

在 V2 中,您只需键入和阅读更多内容,我认为这是引入 errors/incorrectness 并忘记您的需求的最常见原因。

在 V2 中,您必须重复各个实现中常见的内容,如果您犯了错误,充其量整个逻辑将不一致。如果你想修复它,你可能需要在几个地方修复它。

但是,您可以基于 V1 优化代码安全性:为过程选择一个更 "verbose" 的名称,例如

doSomethingVerySpecificWithPar1OfTypeXAppliedToPar2OfTypeY(par1, par2)

(我有点夸张了。。。)所以你马上就明白了你的初衷。

您甚至可以充分利用 V2 并引入各个功能,这些功能只需重定向到 V1 的公共功能(这样就避免了冗余)。清晰度的提高几乎总是超过效率的轻微损失。

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

永远记住大卫惠勒:"All problems in computer science can be solved by another level of indirection"。

顺便说一句:我不认为长方法名是个问题,而是一个好处(当然要达到一定的长度)。