【问题标题】:Best practice for interface design界面设计的最佳实践
【发布时间】:2018-09-12 19:01:01
【问题描述】:

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

版本 1:

doSth(par1, par2)

  • 不是多余的+

  • 任务的单一方法 +

  • 更复杂的实现 -

  • 很容易传错参数-

版本 2:

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

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

  • 长方法名称 -

  • 简单实现 +

  • 没有可能传错的参数+

【问题讨论】:

    标签: function parameters procedure


    【解决方案1】:

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

    在 V2 中,您只需键入并阅读更多内容,我想说这是引入错误/不正确和忘记您的需求的最常见原因。

    在 V2 中,您必须重复各个实现中的共同点,如果您犯了错误,则整体逻辑充其量是不一致的。如果你想修复它,你可能需要在几个地方修复它。

    但是,您可以基于 V1 优化代码安全性:为过程选择更“详细”的名称,例如

    doSomethingVerySpecificWithPar1OfTypeXAppliedToPar2OfTypeY(par1, par2)
    

    (我有点夸大了......)所以你可以立即看到你最初的意图。

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

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

    永远记住 David Wheeler:“计算机科学中的所有问题都可以通过另一个层次的间接性来解决”。

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

    【讨论】:

    • 谢谢奥利弗,我特别喜欢你的第二个想法。这应该是这种情况的最佳解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2013-07-31
    相关资源
    最近更新 更多