完成工作任务与写程序代码的关系
作者:程序员罗尼 | 发布:2021-04-07 | 原文:https://mp.weixin.qq.com/s/vZphf1Yrpn9VR91CUBrMDg
1 概述
工作中,每接到一个任务,我们可以把这个任务当一个开发任务来对待,其中的原理是相通的,下面我们通过一些类比来看看怎么利用写代码的思维过程以便更好的交付这个任务一个方法有调用方,输入,输出,还有执行过程对于一个任务,也有调用方,输入,输出,还有我们做事的执行过程比如领导让你写一份自我总结,调用方就是领导,然后我们就可以在工作日志中新建一个 writeSelfReview() 的任务,现在这个任务还只有一个名字
2 定义输入
明确需求
第一步我们先定义输入,既然是工作总结,那么肯定输入有一项就是我们过去做过的事情,这里假设大家都有写工作日志,那么输入就是过去的工作日志这里还有一个隐藏的限制条件,就是时间范围,你知道这里应该不是让你写过去 N 多年的工作总结,过去多久的呢?一个月、一个季度还是一年?这里需要跟领导确认,也就是明确需求(这一步很重要),假设我们这里要写过去一个月的总结,现在我们就有了两个输入参数那么,现在我们的方法成了这个样子writeSelfReview(WorkLog log, Period lastMonth)
参数校验
除了定义参数,我们也需要对输入做一些校验,比如工作日志不能超过所要求的时间范围,要求是过去一个月的工作,那三个月之前的工作就不在此总结范围内了
3 定义输出
我们再定义输出,输出就是领导想要看到的样子,如果领导有自己的模板,那输出就是按照模板写成的文档,如果领导没有模板,那我我们就先要和领导讨论需要写成什么样子**(这里也是在明确需求)**,先总结出来一个模板,这个模板就可以理解成我们程序里的数据结构,经过讨论我们得出了一个叫做 SelfReviewTemplate 的模板我们用代码简单表达一下SelfReviewTemplate
public class SelfReviewTemplate {
private List<ProjectReview> projectReviews;
public static class ProjectReview {
private String projectName;
private List<String> goals;
private List<String> achievements;
}
}
现在,我们的方法变成了下面的样子SelfReviewTemplate writeSelfReview(WorkLog log, Period lastMonth)
4 定义验收标准
第三步,我们借鉴 TDD 的思路,先写测试,也就是我们要先决定文档写成什么样子才算是写好了,这里随便简单的列出几条,比如
-
没有错别字
-
模板里的每个需要的内容都填写了
-
总结的工作是过去的一个月内完成的
这几个条件就是我们任务完成的验收条件(Acceptance Criteria)现在我们可以写一个测试用例,用来判断当我们认为任务完成之后任务是不是真的完成了,这里的代码仅做示例使用,不用纠结语法问题,看不懂可以略过
public void testWriteSelfReview(){
SelfReviewTemplate result = writeSelfReview(myLog, lastMonth)
assert(noTypo(result));
assert(noEmptyFields(result));
writeSelfReview(errorLog, lastMonth);
assert(throwExceptionWhenErrorLog(result));
}
5 制定方案
第四步,就是制定方案,可能有不同的方案可供选择,这时候就需要列出不同方案的优缺点,做个比较,在根据各种现实条件做一个权衡,然后确定最后的方案这里面可能还会涉及任务的拆分,假设过去一个月你做了 3 个项目,3 个项目都要总结,那么你就可以把这个大任务拆分成三个小任务,我们用下面的代码做个例子
SelfReviewTemplate writeSelfReview(WorkLog log, Period lastMonth) {
summarizeProject1(log, lastMonth);
summarizeProject2(log, lastMonth);
summarizeProject3(log, lastMonth);
}
summarizeProject1 summarizeProject2 summarizeProject3 就是三个子任务,然后每个子任务又可以按照本文描述的方法进行处理,直到每个任务足够小,就可以结束了
6 执行
方案确定好之后,最后就是执行了,如果方案写得好,这一步大部分就是体力活这里如果执行过程中遇到问题,自己解决不了了,那就上报领导,这里又有一个很贴切的类比,遇到解决不了的问题抛出来就跟代码里抛出异常是一个道理,这个时候需要调用方介入处理,也就是让领导帮忙解决,一个良好的工作关系就是要沟通顺畅,自己不要偷偷的把异常吞掉了,等到领导自己发现异常的时候,那就吃不了兜着走了😂
7 验证
如果前面一切顺利执行完成之后,我们需要根据验收条件自己测试一下,看看写出的东西是不是符合要求
8 交差
如果觉得没有问题,那么发给领导就行了至此,一项任务成功完成(完)