《代码中的软件工程》学习总结/心得体会

一、工欲善其事必先利其器

在这一部分主要讲述了一些编程工具的主要方法,包括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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值