假设我有一个网页(使用VB.Net构建在MVC 4上),显示用户可以通过点击编辑链接编辑的数据。此链接将通过传递相关数据字段的Edit
来路由到id
函数。
要显示我的编辑页面,我将获取数据,将其映射到模型,然后将其传递给视图。我们将调用我的映射函数Map2Model
,它接受实体框架模型&返回模型和返回实体框架模型的数据访问函数GetData
。 GetData
接受id
数据和userid
。我们将使用SimpleMembership
进行用户身份验证。执行以下操作被认为是不好的做法(在另一个函数调用的参数列表中调用一个函数:
Function Edit(ByVal id as Integer) as ActionResult
Dim Model2Edit = Map2Model(GetData(id, WebSecurity.GetUserId(User.Identity.Name)))
Return View(Model2Edit)
End Function
VS。 (首先声明变量)
Function Edit(ByVal id as Integer) as ActionResult
Dim TheData as New EntityModel
Dim UserID as Integer
Dim Model2Edit as New Model
UserID = WebSecurity.GetUserId(User.Identity.Name)
TheData = GetData(id, UserID)
Model2Edit = Map2Model(TheData)
Return View(Model2Edit)
End Function
在C#中:
public ActionResult Edit(int id)
{
dynamic Model2Edit = Map2Model(GetData(id, WebSecurity.GetUserId(User.Identity.Name)));
return View(Model2Edit);
}
VS
public ActionResult Edit(int id)
{
EntityModel TheData = new EntityModel();
int UserID = 0;
Model Model2Edit = new Model();
UserID = WebSecurity.GetUserId(User.Identity.Name);
TheData = GetData(id, UserID);
Model2Edit = Map2Model(TheData);
return View(Model2Edit);
}
除了是否是不好的做法之外,我希望我的代码可读。我觉得在描述性方面命名这些函数应该足以让它足够容易。
编辑修正我的标题
编辑2 进一步完善了问题。
编辑3 添加了C#代码
答案 0 :(得分:5)
我假设您的确切问题是:
在另一个函数调用的参数列表中调用函数是不好的做法:
V---------------------------------------V Dim Model2Edit = Map2Model(GetData(id, WebSecurity.GetUserId(User.Identity.Name)))
不,因为那是你唯一使用完全没法的价值的地方。如果你曾经重新使用过该值,那么显然最好保留引用而不是再次调用函数。
还需要考虑其他一些事项:
using
块中包装的一次性对象?如果你想要一个真正的试金石让别人看一下代码,看看他们是否很难理解意图是什么。
答案 1 :(得分:1)
首先制作一些变量:
Dim name = User.Identity.Name
Dim User = WebSecurity.GetUserId(name)
Dim Data = GetData(id, User)
Dim Model2Edit = Map2Model(Data)
Return View(Model2Edit)
然后识别程序其他部分中使用的部分,例如获取用户,并开始重构:
Dim User = GetUser() -> introduce a new function
Dim Data = GetData(id, User)
Dim Model2Edit = Map2Model(Data)
Return View(Model2Edit)
这只是重构的一个开始,使其更具可读性。