gpt4 book ai didi

c# - 可以将私有(private)方法放在我的 Controller 中,还是应该使用 asp.net mvc 将它们分离到某种类型的帮助程序类中?

转载 作者:可可西里 更新时间:2023-11-01 07:51:56 25 4
gpt4 key购买 nike

我有一个 Controller ,可以根据用户类型加载一些下拉菜单。例如:

public ActionResult Index()
{
switch (SessionHelper.ViewLimit)
{
case "C":
ViewData["CustDivision"] = LoadCustDivisions();
ViewData["Customer"] = LoadCustomers();
break;
case "P":
ViewData["Customer"] = LoadCustomers();
ViewData["Employee"] = LoadEmployees();
break;
case "D":
ViewData["Customer"] = LoadCustomers();
ViewData["Division"] = LoadDivisions();
break;
default:
return RedirectToAction("Logout", "Account");
}
return View()
}

首先,switch 语句是否属于 Controller ,其次如果是,我应该将 LoadCustomers()、LoadDivisions()、LoadEmployees() 放在哪里?

最佳答案

我觉得不行—— Controller 中的私有(private)方法产生的问题多于它们解决的问题。以下是我的理由:

当您想在 Controller 中创建一个私有(private)方法时,您已经确定了一段代码有点“低级和肮脏”或重复。这是创建一个单独的帮助器类或将代码移到堆栈下的充分理由。

辅助类,即使只有 1 个方法,也更容易测试和模拟。它还创建了更强的逻辑关注点分离。这样在调试的时候更容易处理。

我也同意 tvanfosson 使用策略模式来帮助避免重新发明轮子并展示对软件开发的更成熟理解。

但实际上,这是您可以为永恒争论两种方式的情况之一。但这归结为您所追求的工艺水平,或者更准确地说,您愿意接受的水平。

关于c# - 可以将私有(private)方法放在我的 Controller 中,还是应该使用 asp.net mvc 将它们分离到某种类型的帮助程序类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/645794/

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