代码重构任务一

// Class:StudentController  
// 功能:学生提交实验报告
	[HttpPost]
        public ActionResult SubmitExperiment(string id)
        {
            service.EditExperimentReport(id).CalculateScore()
                .Submit();
            return RedirectToAction("Index");
        }

// Class:ExperimentClassController 
// 功能:老师帮学生提交实验报告 
	[HttpPost]
        public ActionResult Revocation(string id)
        {
            var report = service.GetExperimentReport(id);
            service.EditExperimentReport(id).CalculateScore()
                .Submit();
            return RedirectToAction("ExperimentReportIndex", new {id = report.ExperimentalClass.Id});
        }

// Class:ExperimentReportCommand
// 功能:计算分数,选做题未做默认2分,做了默认4分;必做题未做默认0分,做了默认4分
	public IExperimentReportCommand CalculateScore()
        {
            if (_experimentReport.WhetherToCommit == WhetherToCommit.Uncommitted)
            {
                var @class = _experimentReport.ExperimentalClass;
                foreach (var result in _experimentReport.ExperimentResults)
                {
                    if (@class.GetExperimentClassContent(result.Id.Index).Type == ContentType.Optional)
                        result.Score = string.IsNullOrEmpty(result.Result) ? 2 : 4;
                    else
                    {
                        result.Score = string.IsNullOrEmpty(result.Result) ? 0 : 4;
                    }
                }
                _experimentReport.PortRoyaleScore = 4;
            }          
            return this;
        }

首先看到任务的时候, 发现功能的注释是多余的,可以通过更改方法名的方法解决。第一个方法名改为SubmitExperiment_Student()就很容易让人理解。第二个方法名则容易让人产生歧义,Revocation是废止的意思,和要实现的功能对不上,改为SubmitExperiment_Teacher()即可,同时去掉注释。第三个方法名则无须修改,只要将注释去掉即可。

其次大致扫一遍代码,发现有些名字很难懂的变量,例如_experimentReport.PortRoyaleScore让人摸不着头脑,通过询问才知道这表示的是实验结果,果断把名字给换一个_experimentReport.Experience就很容易理解了

----------------------------------------------------------------------------------------------------------------------------------分割线

以上是我最先的想法,其实完全没抓到要点。。。,

以上问题在于计算分数的功能不应该出现在这里而是应该放在service里面

posted @ 2018-01-18 12:29  zzzying  阅读(255)  评论(1)    收藏  举报