高级软件工程2021春实验作业总结 曹涵 SA20225102

姓名: 曹涵

学号:SA20225102

高软实验总结

实验一、编译神器VS Code

  VS Code是一个轻量且强大的代码编辑器,支持Windows,OS X和Linux,内置JavaScript、Typescript和Node.js支持,拥有丰富的插件生态系统。VS Code专注与开发者最常用的功能,做到了小而精,这使得开发者可以从代码质量上精益求精。

  VS Code的几个设计特性:

  • 进程隔离的插件模型
  • UI渲染与业务逻辑隔离
  • 使用LSP(Language Server Protocol)和DAP(Debug Adapter Protocol)协议

  在这次实验中,我学会了如何安装和使用VS Code,并且练习了很多快捷键的使用方式,熟悉了VS Code中插件的安装和使用,在实验中体会到了VS Code的设计精巧

实验二、五大场景玩转Git

  Git是一个分布式版本控制工具,可以在本地个人demo中进行版本控制,也可以在多人团队中在线进行版本控制,能很清晰的看到代码的提交信息,有利于代码的管理和维护。

  通过这次试验,我了解到了git的设计理念和基本原理,掌握了基本的git命令,能够在工程实践中通过git来进行版本控制。

实验三、正则表达式的使用

   正则表达式是对字符串操作的一种逻辑公式,通过使用正则表达式可以测试字符串内的模式、替换文本、从字符串中提取子字符串等。

  通过这次实验,我掌握了正则表达式的基本用法。

   个人正则表达式学习笔记

实验四、以menu项目论软件工程

   在这次实验中,通过回调函数,实现了增强模块通用性,使用回调函数可以进一步的解耦模块。通过这次实验体会到了模块化设计、可重用接口、可重入函数、以及线程安全的特性

实验五、VS Code + draw.io完成工程实践项目用例图

 

   通过在VS Code中下载draw.io插件,直接在VS Code中进行用例图的绘画,并将用例图通过链接方式插入到MarkDown文档中

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

  通过这个实验对软件中的一些特殊机制有了深入了解,学会了多态、回调函数、闭包调用、异步调用以及匿名函数这些在设计模式中比较常用的机制的用法。

  • 回调函数:通过函数指针调用的函数。把函数的指针作为参数传递给另一个函数。回调函数是在特定的事件或条件发生时由另一方调用,用于对该事件或条件进行响应
  • 多态:接口的多种不同实现方式。
  • 闭包:变量作用域的一种特殊情形。用在将函数作为返回值时,该函数执行所需的上下文环境作为返回的函数对象的一部分,这样该函数对象就是一个闭包。
  • 异步调用:无需等待被调用函数的返回值就让操作继续进行的方法,可以用Promise对象将异步调用用同步调用的流程表达出来,避免通过嵌套回调函数实现异步调用。
  • 匿名函数:在JS中即为没有名字的函数。通过匿名函数可以实现闭包,也可以模拟块级作用域,减少全局变量。

  以下是使用JavaScript简单实现的

   //多态
        function Super(name){
            this.name = name;
        }

        Super.prototype.getName = function(){
            console.log(this.name);
        }

        function Sub1(name){
            this.name = name;
        }

        function Sub2(name){
            this.name = name;
        }

        let s = new Super("super");
        let sub1 = new Sub1("sub1");
        let sub2 = new Sub2("sub2");

        Object.setPrototypeOf(sub1,Super.prototype);
        Object.setPrototypeOf(sub2,Super.prototype);

        sub1.getName();
        sub2.getName();

        //闭包
        function makeFunc() {
            var name = "Mozilla";
            function displayName() {
                console.log('闭包:'+name);
            }
            return displayName;
        }

        var myFunc = makeFunc();
        myFunc();


        //回调
        let handler = function () {
            console.log("回调:this is a callback function");
        }
        setTimeout(handler, 1000);


        //异步调用
        var promise = new Promise(function (resolve, reject) {
            resolve("异步调用:success callback");
        });

        promise.then(function (value) { // resolve(value)
            console.log(value);
        }, function (value) { // reject(error)
            console.log(value);
        });

        
        //匿名函数
        function timeout(ms) {
            return new Promise((resolve) => {
                setTimeout(resolve, ms);
            });
        }

        timeout(1000).then(() => {
            console.log('匿名函数:done');
        }); 
posted @ 2021-07-18 21:01  汝染  阅读(31)  评论(0编辑  收藏  举报