当审批者想批准/拒绝任务时,我想更改工作流的任务编辑表单。请回顾并建议改进或任何其他可能的解决方案,并作出解释。
public void createTask1_MethodInvoking(object sender, EventArgs e)
{
createTask1_TaskId1 = Guid.NewGuid();
createTask1_TaskProperties1.Title = "Test Title";
createTask1_TaskProperties1.AssignedTo = "i:0#.w|directory\approver";
var taskList = workflowProperties.TaskList;
var wfContentType = taskList.ContentTypes["Workflow Task"];
TaskTitle = workflowProperties.Item["Title"].ToString();
wfContentType.DisplayFormUrl = "_Layouts/SharePointProject4/ApplicationPage1.aspx";
wfContentType.EditFormUrl = wfContentType.DisplayFormUrl;
wfContentType.Update();
taskList.NavigateForFormsPages = false;
taskList.Update();
}发布于 2015-05-20 13:36:29
给你的代码一些空间呼吸。
在C#中,空空间不需要花费任何费用,因此添加一些空白来将类似的概念组合在一起。
public void createTask1_MethodInvoking(object sender, EventArgs e)
{
createTask1_TaskId1 = Guid.NewGuid();
createTask1_TaskProperties1.Title = "Test Title";
createTask1_TaskProperties1.AssignedTo = "i:0#.w|directory\approver";
var taskList = workflowProperties.TaskList;
var wfContentType = taskList.ContentTypes["Workflow Task"];
TaskTitle = workflowProperties.Item["Title"].ToString();
wfContentType.DisplayFormUrl = "_Layouts/SharePointProject4/ApplicationPage1.aspx";
wfContentType.EditFormUrl = wfContentType.DisplayFormUrl;
wfContentType.Update();
taskList.NavigateForFormsPages = false;
taskList.Update();
}其次,在命名变量时,要显式化。没有必要缩写任何东西,再一次,额外的字符是免费的。
public void createTask1_MethodInvoking(object sender, EventArgs e)
{
createTask1_TaskId1 = Guid.NewGuid();
createTask1_TaskProperties1.Title = "Test Title";
createTask1_TaskProperties1.AssignedTo = "i:0#.w|directory\approver";
var taskList = workflowProperties.TaskList;
var workFlowContentType = taskList.ContentTypes["Workflow Task"];
TaskTitle = workflowProperties.Item["Title"].ToString();
workFlowContentType.DisplayFormUrl = "_Layouts/SharePointProject4/ApplicationPage1.aspx";
workFlowContentType.EditFormUrl = wfContentType.DisplayFormUrl;
workFlowContentType.Update();
taskList.NavigateForFormsPages = false;
taskList.Update();
}接下来,进入设计阶段。您已经命名了一个任务createTask1,这是值得关注的,因为这意味着您可能已经用不同的数字创建了很多这样的任务。将它们放到一个名为createTasks的集合中,然后尝试重构您的MethodInvoking事件处理程序,以便在所有createTasks中进行抽象。如果createTask1的某些地方意味着事件处理程序逻辑不能应用于其他createTask实例,那么您应该根据这个唯一属性命名createTask1。
很难知道这个方法处理程序要做什么,因为它只是以调用它的事件命名。给它一个更好的名称,或者用一个合理的名称将这个功能提取到自己的方法中,然后从createTask1_MethodInvoking调用它。
最后,我看到了一堆神奇的字符串,这使得重构变得非常困难,因为您必须在很多地方进行更改,而且它们还会妨碍代码的可理解性。将几乎所有这些字符串都用合理的名称放入常量字段中。
https://codereview.stackexchange.com/questions/85564
复制相似问题