任务分解

任务分解

对于一个程序媛来说,如何提高自己的开发效率,这一直都是我追寻的方法。直到最近才get到一个可以有所帮助的技能。

任务分解,列Task

当我们拿到一个任务卡片时,经常干的一件事,就是明确卡片中的要求和明细,然后就直接开始码代码了。因为写的代码是可见的,运行成功会有极大成就感,然而其实这并不是一个好的方式。

在我们写代码之前应该根据卡片内容,从开发的角度把一个大卡分解成各个小任务,然后针对每个小任务进行开发才是可取的。其实这种方法得到的成就感并不亚于前者。

TASK 是什么,如何列

很多人会和我一样困惑,要列Task,但是什么是Task呢?一般来说,一个function(函数),一个Process或者一个Code Block(代码块)都可以是一个Task。
每一个Task都有相应的输入和输出。输入的可以是函数的参数,全局变量,局部变量(对于代码块来说)。输出可以是返回值,变量等。

每个Task的输入都是可穷尽的,在列Task的时候要列出所有用到的Task。
列Task的时候的命名要精确,每一个名字在不同的地方有不同的意思。

列Task,一般会画一个包含Data和Process的图。类似一个有架构的数据流向图。Data(数据)一般有数组、队列、栈、树、对象、类、有循环的对象等,Process(过程)一般有顺序的、选择的(if/switch)、循环(for/while)等。

参考
编程的精进之法

PDCA 戴明环

PDCA指的是Plan-Do-Check-Action,而列Task属于Plan的内容。

如何定义Done?
1.code Done
2.test pass
3.Integration env
4.showcase
5.production env
6.ux(用户使用)

单个任务的开发流程:0)Spike即调研;1)写测试;2)写实现;3)测试通过

打印学生成绩单

背景:

https://www.zybuluo.com/jtong/note/471501 中的课后作业
打印所有人的成绩单,包括平均分和总分。
打印全班级的总分平均分和中位数。

列TASK
1) 转换ViewModel

输入:

studentScoresArray:[[String]]

输出:

studentScoresSheet:[{
    name:String,
    chinese:double,
    english:double,
    math:double,
    programming:double
    },
    {
    ...
    }]
2) 得到学生成绩

输入:

studentScoresSheet

输出:

studentScoresSheetWithSummary:[{
    name:String,
    chinese:double,
    english:double,
    math:double,
    programming:double,
    average:double,
    total:double
    },
    {
     ...
    }]
3) 计算总计

输入:

studentScoresSheetWithSummary

输出:

summary:{
    totalAverage:double,
    totalMidden:double
    }
4) 打印成绩单

输入:

studentScoresSheetWithSummary
summary

输出:

Result:String

Github代码

猜数字游戏

具体游戏内容

应用启动


界面1(按1启动游戏)


main是解决输入输出的。
Router通过输入输出解析找到具体的Command。
Command处理各种具体的用户输入,对Core层返回的结果翻译成友好的输出。
Core层函数生成计算结果。

退出(按2退出游戏)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值