高级软件工程课程学习总结和心得
一、工欲善其事必先利其器
1. winget
Windows11 自带了 winget,使 Windows 也有像 Linux 一样方便的包管理(apt,yum,pacman 等),功能正在完善中。
2. VSCode
3. Go
winget 下载或者官网均可。
- vscode下载go插件
- 打开menu项目文件夹,配置go mod和代理
➜ menu go env -w GO111MODULE=on
➜ menu go env -w GOPROXY=https://goproxy.cn,direct
- 初始化仓库go mod
➜ menu go mod init menu
go: creating new go.mod: module menu
go: to add module requirements and sums:
go mod tidy
➜ menu
- 写个hello.go,期间go扩展要求安装
gopls
dlv
等,直接运行调试
4. git
- git本地常用命令
git init 在一个新建的目录下创建版本库
git status 查看当前工作区的状态
git add Files 把文件添加到暂存区
git commit -m “提交说明” 把暂存区里的文件提交到仓库
git log 查看当前HEAD之前的提交记录,便于回到过去
git reset --hard HEAD^^/HEAD-100/commit-id/commit-id的前几个字符 回退版本
git relog 可以查看当前HEAD之后的提交记录,便于回溯
git reset --hard commit-id/commit-id 的头几个字符 回退
git checkout 分支名 切换分支
- git远程版本库常用命令
git clone 仓库地址 通过clone远端的版本库从而在本地创建一个版本库
git fetch 仓库地址 下载一个远程存储库数据对象等信息到本地存储库
git push 仓库地址 将本地存储库的相关数据对象更新到远程存储库
git merge 分支名 将目标分支合并到当前分支中,并自动进行新的提交,如果不想提交,可以加 --no-commit后缀
- 团队项目中的分叉合并
建议团队项目的每一个开发者都采用的工作流程大致如下:
1.克隆或同步最新的代码到本地存储库
2.为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制
3.在该分支上完成某单一功能模块或代码模块的开发工作
4.最后,将该分支合并到主分支
git默认的合并方式为:快进式合并,会降分支里commit合并到主分支里,合并成一条时间线,与我们期望的呈现为一段独立的分支线段不符,因此合并时需要使用no-ff参数关闭“快进式合并”
二、工程中的软件工程
- 一致且简明的代码风格和模块化设计
package main
import "fmt"
type Node struct {
data interface{
}
next *Node
}
type List struct {
length int
head *Node
}
func (list *List) IsEmpty() bool {
if list.length == 0 {
return true
} else {
return false
}
}
func InitList() *List {
node := new(Node)
L := new(List)
L.head