代码分析总结

2021SC@SDUSC
本次项目的代码分析基本结束,在这次项目代码的分析中,我确确实实的学到了很多知识:

个人学习总结

一、优秀的编程思想

我再前面的有关分析中也说到过,实践出真知,在课本中学的再好,也中就遇不到那些经典的问题,有些东西课本上不会去、也没有办法去教给我们,只有在实践中才能感觉到实际的做法,这些是讲授大的思想的时候贯彻不到的地方。

二、框架与模型思维

在这个项目中,这个项目本身就是一个巨大的模型化,框架化的东西,我再分析的过程中也是一点一点的咀嚼出了它的巨大味道,面向对象的很多思想,比如接口、封装、继承、还有很多编程原则比如单一职责原则、重用原则、接口隔离原则、里式替换法则、迪米特法则等都在项目里面得到了深刻的体现,我们在学习这些原则的时候感觉是很容易,可是在实际的开发中用这些原则去处理问题的能力却大大的缺失,这也许也是我们开设实践课的原因,分析整个项目,仔细回味,其实这就是无形中的开发经验,这是单靠理论学习难以创造的,我们必须去上手实际的操作,熟能生巧,在实际的开发或者分析中掌握这种思维。

三、团队的交流学习过程

在刚开始分析的时候,我觉得一个人进行自己的分析就行,不用去管组员的分析,也不要去向他们求助,可是后来我就改变了,在这种实际项目的分析中与组员进行交流是获取正确的知识,增加理解的最快方法,在小组的分析中,每个人都有各自的分工,可这个项目是一个整体,其中的部分功能怎么也不可能完全去耦合,这在面向对象中是不可能做到的,所以这就难免要去分析上下文,去进行组员功能间的相互验证,如果我们一个人去进行,那么就难免既费力又不省心,所以这时候与组员进行交流才是王道,而且在相互交流的过程中也可以帮助加深我们对项目的理解,更重要的是起到了佐证的作用,相互印证,才学的更快。


然后就是整个项目的总结:

围绕项目的总体实现,也就是流程:

一、已经过json校验和传输校验

{
    "[]": {//返回一个array
        "page": 1,//array条件,页码
        "count": 5,//array条件,返回数量,用pageSize必须和pageNum一起用,这个就不需要。
        "sortDirection": "increase",
        "sortOrder": "/user/id",
        "user": {//返回一个object
            "range": 1,//object条件
            "sex": 0
        },
        "work": {
            "userId": “/user/id”//缺省路径,自动补全,只在同级可用。    // "user.id"
        },
        "comment[]": {/返回一个array,名为comment。[comment]??
            "page": 0,
            "count": 3,
            "comment": {//Map<[]/comment[]/comment/workId, []/work/id>
                 "workId":[]/work/id”//全路径           //“work.id”
             }
        },
    }
}



解析:
1.每解析一个object前赋值path = parentPath + objectName;
2.判断是否含转义路径:如果没有就直接获取,放到一个resultObject内并移除requestObject内对应key-value;如果有就添加到一个Map<key, path> relationMap
3.最后把resultObject的内容根据relationMap用key对应的值 替换requestObject里的
path。
4.根据requestObject再获取一次。


返回数据:

 {
    "[]":[
        {
            "comment[]":[//改为这种?{"array":[], "page": 1, "hasMore": true,//服务器还有更多数据(1)}
                {
                    "comment":{
                        "content":"This is a Content...-68",
                        "id":68,
                        "parentId":448,
                        "targetUserId":959,
                        "targetUserName":"targetUserName-959",
                        "userId":2314,
                        "userName":"userName-92565",
                        "workId":371
                    }
                },
                {
                    "comment":{
                        "content":"This is a Content...-13",
                        "id":13,
                        "parentId":790,
                        "targetUserId":7162,
                        "targetUserName":"targetUserName-7162",
                        "userId":34,
                        "userName":"userName-5526",
                        "workId":371
                    }
                },
                {
                    "comment":{
                        "content":"This is a Content...-3",
                        "id":3,
                        "parentId":725,
                        "targetUserId":59960,
                        "targetUserName":"targetUserName-59960",
                        "userId":82002,
                        "userName":"userName-85560",
                        "workId":371
                    }
                },
                null//最后一个为null表示没有更多了,否则就是服务器还有更多数据(2)
            ],
            "user":{
                "head":"http://www.tooopen.com/view/82002.html",
                "id":82002,
                "name":"Name-82002",
                "phone":"1300082002"
            },
            "work":{
                "content":"This is a Content...-371",
                "id":371,
                "picture":"http://www.tooopen.com/view/371.html",
                "title":"Title-371",
                "userId":82002
            }

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c g代码解析源码是指对使用c语言和g代码的程序进行理解和分析。在进行代码解析时,需要对代码中的各个部分进行逐行分析,并了解其作用和功能。 首先,对于c语言部分的代码,可以根据变量的声明和定义了解各个变量的数据类型和作用。通过对函数的调用和传递参数的过程进行追踪,可以了解代码的执行流程以及各个函数的功能。重点分析函数内的算法逻辑和控制结构,包括if语句、for循环、while循环等,以了解代码的判断和循环过程。 而对于g代码部分的解析,则需要了解g代码的结构和指令的含义。首先,分析程序的启动和初始化部分,了解如何设置初始状态和参数。然后,根据具体的功能需求,分析各个指令的作用和参数的含义。对于涉及到位置、速度和加速度的指令,可以追踪其改变的过程,以了解如何控制运动和路径。另外,还需要注意g代码中的条件语句和循环结构,以了解其对程序流程的控制。 在代码解析过程中,还可以参考相关的注释和说明文档,以加深对代码的理解。同时,可以通过调试工具或者输出调试信息的方式,对代码的执行过程进行跟踪和验证,以确保对代码的解析的准确性。 总而言之,对于c g代码的解析源码需要对代码进行逐行分析,了解变量的定义和作用,函数的调用和参数传递,算法逻辑和控制结构,以及g代码的结构和指令的含义。通过对代码的解析,可以深入理解代码的功能和实现过程。 ### 回答2: 源码解析是通过分析和理解程序源代码的逻辑和结构来揭示其功能和实现方法的过程。在C和G代码解析中,我们主要关注的是C语言和G代码的语法规则、关键字和函数库,以及它们在程序中的具体应用和执行过程。 在解析C代码时,我们需要理解C语言的基本语法结构,例如变量的声明、赋值和使用等。同时,我们还要注意C语言的控制结构,如条件语句、循环结构和函数的定义和调用等。除此之外,我们还需要了解C语言的数据类型和运算符,以及C标准库中常用的函数和宏等。 对于G代码的解析,我们需要熟悉G代码的语法规则和格式。G代码是用于数控机床的一种指令语言,用于控制机床的运动轨迹和工具的操作等。在解析G代码时,我们需要了解G代码中常用的指令类型,如运动指令、几何指令和辅助指令等。同时,我们还需要了解G代码中常用的参数和变量,如坐标系、速度、刀具半径补偿和宏指令等。 在解析C和G代码时,我们需要注意代码中的注释和命名规范,以便更好地理解代码的功能和意图。此外,我们还可以借助一些工具和调试器来辅助我们进行源码解析,例如编译器、调试器和代码分析工具等。 总之,C和G代码解析源码是一个需要理解语法规则和深入理解代码逻辑的过程,它能帮助我们更好地掌握代码的功能和实现方法,从而能够更好地进行代码调试、优化和扩展。 ### 回答3: C和G的代码解析是指对C语言和Golang代码进行分析和理解。 C语言是一种通用的高级编程语言,广泛应用于系统级开发和嵌入式系统。C语言的解析和分析通常包括以下内容: 1. 词法分析:将源代码分成一个个的标记(token),如关键字,标识符,常量等。 2. 语法分析:根据C语言的语法规则,将标记序列构建成抽象语法树(AST)。语法分析也包括错误检测和纠正。 3. 语义分析:对AST进行检查,以确保代码的合法性和一致性。语义分析包括类型检查,变量生命周期检测等。 4. 符号表管理:构建和维护符号表,记录变量和函数的信息,用于后续的语义分析和优化。 5. 代码生成:根据AST,将高级代码转换成中间代码(如LLVM IR)或者特定架构的机器代码。 Golang是由Google开发的一种静态类型、编译型的编程语言。Golang的代码解析和分析相对简单,主要包括以下内容: 1. 词法分析和语法分析:将源代码分解成tokens,并根据语法规则构建AST。 2. 类型检查:对AST进行类型检查,确保变量和函数的正确使用。 3. 闭包分析分析代码中的闭包(闭包是一个函数和对其周围状态的引用捆绑在一起形成的实体),以确定它们是否正确使用。 4. 内存管理:分析代码中的内存分配和释放,以确保避免内存泄漏或悬空指针。 5. 并发分析分析代码中的并发操作,检查数据同步和竞争条件。 6. 代码生成:根据AST生成机器码,将Go代码转化为可执行的二进制文件。 总结来说,C代码解析和分析相对复杂,包括词法分析、语法分析、语义分析、符号表管理和代码生成等步骤。而Golang代码解析和分析相对简单,包括词法分析、语法分析、类型检查、闭包分析、内存管理、并发分析代码生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值