《高级软件工程》实验作业总结_SA20225481_吴佳佳

一、实验总结

实验一 编译神器VSCode

  在了解VSCode诞生的背景,基本操作,快捷键等基础上,最让我印象深刻的是VSCode的设计,不管是进程隔离的插件模型,还是先进性的引用LSP(Language Server Protocol)和 DAP(Debug Adapter Protocol)两大协议,都体现出了VSCode设计者对产品的定位:简洁而聚焦。让我明白了一个好的设计一定要倾向于简单易懂。

实验二 五大场景玩转Git

  • 通过几个典型场景下Git命令的演示操作,让我清晰快速地了解了Git的基本使用及背后的原理。为以后的实际工作中团队的合作使用打下了坚实的基础;
  • 通过Git和SVN的对比,了解了分布式版本控制工具相对于集中式版本管理工具的优势所在;
  • git常用命令:https://www.runoob.com/git/git-basic-operations.html

实验三 正则表达式的使用

  • 本实验通过在vim编辑器中将字符串规则转换成正则表达式的练习,了解了正则表达式在实际使用中的强大便捷之处,掌握了正则表达式的常用操作;
  • 常用表达式总结:
    • 1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
      2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
      3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
      4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
      5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 
      6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
      7 身份证号:
      15或18位身份证:^\d{15}|\d{18}$
      15位身份证:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
      18位身份证:^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$
      8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
      9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
      10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
      11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 
      12 日期格式:^\d{4}-\d{1,2}-\d{1,2}

实验四 menu菜单实现

  本实验旨在实现一个类似命令行提示的menu菜单功能。过程中老师将一个hello world的简单的c语言代码程序,通过对代码书写的规范,模块化代码设计,可重用结构提取,回调函数使用,可重入函数以及线程安全函数分析,让我明白了代码是如何生长起来的,明白了怎样实现一个高内聚低耦合,线程安全以及鲁棒性强的程序。收获匪浅。

实验五 VSCode + draw.io绘制UML用例图

  すごい!!!VSCode+draw.io画UML图例,是我见过绘制UML图最方便的方式~

实验六 验证软件中的一些特殊机制

  下面的几种机制是软件开发过程中重构代码,简化代码等的利器,需要理解并能融入自己的代码中。

  • 回调函数(Callback):可以将函数的指针(地址)作为参数传递给另一个函数,注意区分Callin的方式;
  • 多态:同一接口使用不同实例执行不同操作,用于多种设计模式中;
  • 闭包:将函数与函数的上下文环境合称闭包,可访问外部函数内部作用域,在javascript中广泛使用;
  • 异步调用:Promise(ES6中新加)将异步调用以同步的流程表达出来,避免嵌套回调函数,简化了回调函数传入的接口实现;
  • 匿名函数:顾名思义指的是没有名字的函数,在实际开发中使用的频率非常高,可作变量值、参数值、自调用;

课程思考和建议

  首先,当然是表达对老师的敬佩,能将这门涵盖范围广,难度大的高级软件工程课程讲的浅显易懂,不时的还穿插些实际的编程技巧和对人生的感悟,让我们不仅在学习上,更是在思想上都有很大的提升。

  有个大大的建议就是希望孟老师能多引入些像menu菜单的程序设计演示,即一个项目从0到1到万物的演变过程,可以让学生了解到项目的演化过程,对软件工程会有更深的理解。

posted @ 2021-07-16 19:39  ++คิดถึง  阅读(101)  评论(1)    收藏  举报