agenda 开发项目
需求描述
业务需求:design.md
功能需求: 设计一组命令完成 agenda 的管理,例如:
agenda help :列出命令说明
agenda register -uUserName –password pass –email=a@xxx.com :注册用户
agenda help register :列出 register 命令的描述
agenda cm … : 创建一个会议
原则上一个命令对应一个业务功能
持久化要求:
使用 json 存储 User 和 Meeting 实体
当前用户信息存储在 curUser.txt 中
开发需求
团队:2-4人,一人作为 master 创建程序框架,其他人 fork 该项目,所有人同时开发。团队 不能少于 2 人
时间:两周完成
项目目录
cmd :存放命令实现代码
entity :存放 User 和 Meeting 对象读写与处理逻辑
其他目录 : 自由添加
日志服务
使用 log 包记录命令执行情况
第一周任务
按 3.3 安装 cobra 并完成小案例
按需求设计 agenda 的命令与参数(制品 cmd-design.md)
master 创建项目,提交到 github, 其他人 fork 该项目
每人分别创建属于自己的命令(命令实现 Print 读取的参数即可),提交并归并。确保不同人管理不同文件,以便于协作
如时间富余,请完成 User 和 Meeting 实体 json 文件读写
思考
假设你要建立项目 testcobra,你必须建立在 $GOPATH\src$your_git_account$repo\testcobra 目录下,才能正常实现协作。采用 golang 术语,$GOPATH\src$your_git_account$repo\ 是你当前的 工作区 。
问题:如果你的项目不能公开代码,甚至不能使用 github,如何实现多人协作呢?
第一周任务博客
第二周任务
添加 log 服务,记录用户的操作过程,以及关键的输出
约定 entity 和 cmd 之间的接口服务,实现 agenda,并在 README.md 文件中给出简要使用说明和测试结果
(可选)在项目中添加 .travis.yml 文件,并添加测试程序。让你的项目“持续集成” – “CI” 了!
思考
为什么 cobra 的设计,让我们构建命令行程序变的如此简单?如何持续提升我们的设计能力。
可选任务(博客)
由于课程 golang 部分非常快,项目涉及许多知识点,需要您分享经验和英文资料翻译,以帮助您的同学入门。主要包括:
运用面向对象的设计思想,仅使用 pflag 包,实现一个简版 pcobra 库取代 cobra(不需要 fork cobra)。并使得你的 agenda 项目能正常运行
git 和 travis 在项目中的使用经验
log 的使用与 debug 技术
go 语言的一些较难理解的知识
分数,就是你贡献的回报! 请在课程群博客收集提交博客 url
评价标准
提交与贡献均衡性与持续性(使用 Github Insights 分析)
Readme 的质量
部分代码检视