代码重构任务一

// 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里面

转载于:https://www.cnblogs.com/zzzying/p/8309551.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值