一、工欲善其事必先利其器
在这一部分主要讲述了一些编程工具的主要方法,包括VS Code、Git、Vim和正则表达式等内容。
1.VS Code
Visual Studio Code(简称vscode)是一个轻量且强大的代码编辑器,支持Windows,OS X和Linux。内置JavaScript、TypeScript和Node.js支持,而且拥有丰富的插件生态系统,可通过安装插件来支持C++、C#、Python、PHP等其他语言。
其常用的快捷键如下:
打开文件夹( Ctrl/⌘+O)和关闭文件夹工作区( Ctrl/⌘+K F)
新建文件(Ctrl/⌘+N)、关闭文件(Ctrl/⌘+W)
编辑文件和保存文件(Ctrl/⌘+S)
文件内搜索(Ctrl/⌘+F)
关闭所有文件(Ctrl/⌘+K W)
关闭已保存的文件(Ctrl/⌘+K U)
Ctrl+/用于单行代码注释和取消注释
Ctrl+Shift+A用于代码块注释和取消注释。
2.Git
Git是目前世界上最先进的分布式控制系统,主要的用法如下:
git init # 初始化一个本地版本库
git status # 查看当前工作区(workspace)的状态
git add [FILES] # 把文件添加到暂存区(Index)
git commit -m "wrote a commit log infro” # 把暂存区里的文件提交到仓库
git log # 查看当前HEAD之前的提交记录,便于回到过去
git reset —hard HEAD^^/HEAD~100/commit-id/commit-id的头几个字符 # 回退
git reflog # 可以查看当前HEAD之后的提交记录,便于回到未来
git reset —hard commit-id/commit-id的头几个字符 # 回退
3.Vim
vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
1.命令模式(Command mode),用户刚刚启动vi/vim,便进入了命令模式。此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令
2.输入模式(Insert mode),在命令模式下按下i就进入了输入模式,按ESC退出输入模式,切换到命令模式。
3.底线命令模式(Last line mode),在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。基本的命令有q(退出程序)、w(保存文件)等。按ESC键可随时退出底线命令模式
其次还介绍了vim中移动光标的基本方法。
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
此外还有更多和Vim相关的操作方法可以通过参考资料了解。
4.正则表达式
在正则表达式中,为了提高匹配的效率,加入了通配符“.”、“+”、“*”、“?”节省时间。
• 通配符“.”将匹配任意一个字符。通配符也可称为 dot 和 period。你可以像正则表达式中的任何其他字符一样使用通配符。例如,如果你想匹配“hug”,“huh”,“hut”和“hum”,可以使用正则表达式hu.来匹配这所有四个字符串。
• 通配符“+”用来查找出现一次或多次的字符,例如hahhhhh,可以使用正则表达式hah+来匹配。
• 通配符“*”匹配零次或多次出现的字符,使用正则表达式hah*来匹配,还可以匹配ha字符串。
• 通配符“?”指定可能存在的元素,也就是检查前一个元素存在与否,如正则表达式colou?r、favou?rite中通配符“?”前面的u字符存在和不存在两种情况的字符串都会匹配。
其他更多用法可以通过参考资料了解。
二、代码中的软件工程
这一部分是通过编写一个小项目menu,并一步步重构代码优化程序进而更符合软件工程的要求。在这一过程中我们理解了简化代码的不同方法、松散耦合与功能内聚、KISS原则、外部接口、call-back函数、线程优化、编译器优化等内容。
三、从分析到设计的基本方法
这一部分主要介绍了如何获取需求、对需求进行分析和建模、从需求分析到软件设计的内容。
其中对需求进行分析和建模的方法有:原型化方法(Prototyping)和建模的方法(Modeling)、用例建模(Use Case Modeling)、面向对象分析涉及的基本概念、业务领域建模(Domain Modeling)、关联类及关系数据模型、关系数据模型的MongoDB设计与实现。
四、软件科学基础概论
这一部分介绍了一些常见的软件架构举例、软件架构风格与描述方法以及如何评判高质量软件,还学习了回调函数、闭包、匿名函数等面向对象编程的概念和机制。
五、软件危机和软件过程
这一部分讲述了软件危机的产生过程及原因,并学习了TSP、CMM/CMMI、敏捷方法和DevOps等软件开发和评估方法,这些方法可以有利于应对软件危机。
六、学习心得
这一学期选修了孟宁老师的高级软件工程,学习编写软件的一些常用工具和重要原则,更深刻地理解了软件开发过程,从需求分析到软件设计到软件开发,有了一个清晰的认知。孟宁老师上课时旁征博引,在讲述专业课的同时还会讨论时事和引用哲学原理,让我们理解起来更加清晰。
参考资料
代码中的软件工程: 《代码中的软件工程》一书的配套ppt和源代码 (gitee.com)
学号:158