界面设计的最佳实践
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"。
顺便说一句:我不认为长方法名是个问题,而是一个好处(当然要达到一定的长度)。
我想知道哪个版本最适合实施。 参数是具有 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"。
顺便说一句:我不认为长方法名是个问题,而是一个好处(当然要达到一定的长度)。