gpt4 book ai didi

language-agnostic - 过度泛化函数的名称?这是反模式吗?

转载 作者:行者123 更新时间:2023-12-04 18:32:38 26 4
gpt4 key购买 nike

将参数传递给函数以选择函数做什么的名称是什么?

例如:

enum {
DoSomething,
...
};
void f(FunctionType a);

f(DoSomething);
....
f(DoSomethingElse);

对比:

void DoSomething();
....
void DoSomethingElse();

最佳答案

一般来说,可以将其视为一种反模式,因为单独的方法更简单、更明确。但是,某些情况可能会改变这种观点。两个例子:

前端 Controller

所有 Front Controller 模式都是这样工作的(Struts 或更高版本):调用带有参数的集中式方法;它稍后被分派(dispatch)到正确的处理程序(由参数之一标识)。这里的要点是在许多特定代码之前(和之后,可能有异常(exception))应用通用代码。

问题不在于执行此类代码,而在于在您自己的代码中执行此操作。如果它在框架代码中(已经编写、经过良好测试等),那很好。示例是所有拦截技术,如 Spring ..

命令

Command 模式可能非常接近:

  1. 标识符可以标识要执行的命令;
  2. 然后你找到正确的代码:在命令模式中,它是一个对象,所以你可以使用映射来找到与标识符对应的对象
  3. 执行代码:在命令模式中,所有这些对象都有一个共同的方法,所以调用它是通用的,不需要切换。

关于language-agnostic - 过度泛化函数的名称?这是反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com