源代码

分析一套源代码的代码规范和风格并讨论如何改进优化代码——高级软件工程课第三次作业

╄→гoц情女王★ 提交于 2019-12-01 02:48:24
结合工程实践的选题,我选择的是一个开源的C++轻量级网络框架——ZLToolKit。下面按照所给的要求依次展开(以下均以Google的C++编码规范为标准) : 1.根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点   src文件夹下的源代码目录结构如下: src | |-- NetWork # 网络模块 | |-- Socket.cpp # 套接字抽象封装,包含了TCP服务器/客户端,UDP套接字 | |-- Socket.h | |-- sockutil.cpp # 系统网络相关API的统一封装 | |-- sockutil.h | |-- TcpClient.cpp # TCP客户端封装,派生该类可以很容易实现客户端程序 | |-- TcpClient.h | |-- TcpLimitedSession.h # 派生于TcpSession,该模板类可以全局限制会话数量 | |-- TcpServer.h # TCP服务器模板类,可以很容易就实现一个高性能私有协议服务器 | |-- TcpSession.h # TCP服务私有协议实现会话基类,用于处理TCP长连接数据及响应 | |-- Poller # 主线程事件轮询模块 | |-- EventPoller.cpp # 主线程

分析一套源代码的代码规范和风格并讨论如何改进优化代码

不羁的心 提交于 2019-12-01 02:24:03
1.结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点;   主要分析了elasticsearch:Open Source, Distributed, RESTful Search Engine,文件结构:   这款软件主要是按照不同的功能划分了不同的Java包名,每个包里面的类都分别完成这个软件的某个模块。 2.列举哪些做法符合代码规范和风格一般要求;   这款软件有一些专门的单元测试,每一个类和一些主要的public方法都会进行注释,方便了以后代码的更新和维护。 3.总结同类编程语言或项目在代码规范和风格的一般要求。   这里主要总结一些Java的编程规范:   1.对于具有特殊转义序列的任何字符(\b, \t, \n, \f, \r, ", '及\),我们使用它的转义序列,而不是相应的八进制(比如\012)或Unicode(比如\u000a)转义;对于剩余的非ASCII字符,是使用实际的Unicode字符(比如∞),还是使用等价的Unicode转义符(比如\u221e),取决于哪个能让代码更易于阅读和理解.   2.一个源文件包含(按顺序地):许可证或版权信息(如有需要),package语句, import语句, 一个顶级类(只有一个),

分析一套源代码的代码规范和风格并讨论如何改进优化代码

不问归期 提交于 2019-12-01 02:06:55
分析一套源代码的代码规范和风格并讨论如何改进优化代码 我的工程实践选题为基于大数据问答训练的中文自然语言理解系统设计,本项目学习知识工程的构建方法,研究学习WordNet、frameNet等常用语义网络,使用机器学习算法研究中文自然语言理解,构建一套智能文本摘要提取系统。所以我在github上找到了一套名为seq2seq-chinese-textsum的源码。 1.结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点 1.1目录结构 可以看出整个文件目录比较清晰,通俗易读,通过文件名就能知道文件功能。包括数据文件,数据处理文件,预测,训练模型,README文档使用说明等文件,还是比较清晰的。 1.2文件名/类名/函数名/变量名 文件命名 ● 尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况),可以看出此项目是符合文件命名原则的。 类名 ● 使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头。 ● 将相关的类和顶级函数放在同一个模块里. 不像Java, 没必要限制一个类一个模块 函数名 ● 函数名一律小写,如有多个单词,用下划线隔开 ● 私有函数在函数前加一个下划线_ 变量名 ● 变量名尽量小写, 如有多个单词

分析一套源代码源代码的代码规范和风格并讨论如何改进优化代码

点点圈 提交于 2019-12-01 02:06:49
1.结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点; 本次分析的源代码是《Android仓库管理系统》项目的源代码,该项目实现了包括出库,入库,订单,盘点,拣货等功能,可以进行一维码扫描,二维码扫描,摄像头扫描,自定义控件,网络通讯,sqllite数据库使用   该项目的目录结构: 这其中java文件夹中是实现各活动功能的代码,res文件夹中是布局文件,各文件都以具体每个活动实现的功能命名,可以很轻松地找到相应界面。 2.列举哪些做法符合代码规范和风格一般要求: 该项目是用JAVA进行的编程,活动函数名都十分规范,部分代码如下: 可以看到,它格式规范,没有多少冗余语句,但是缺少注释,这对代码的阅读带来了很多麻烦 3.列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;    总体来看这个项目的代码还是足够简洁的,但是因为缺少注释导致阅读代码需要多花费很多时间,不够清晰,应当多添加注释,不管是对于第三方还是自己的编码优化都有很大的好处。 4.总结同类编程语言或项目在代码规范和风格的一般要求。    安卓开发普遍使用的都是JAVA语言,在编程时需要注意到: 1、首先在每个.java文件的开始需要注释标明编码的时间作者以及文件功能。 2

分析一套源代码的代码规范和风格并讨论如何改进优化代码

那年仲夏 提交于 2019-12-01 02:06:00
结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点 分析一套我平常在用的代码--scrapy爬虫框架,使用的python语言。 Scrapy运行流程大概如下: 引擎从调度器中取出一个链接(URL)用于接下来的抓取 引擎把URL封装成一个请求(Request)传给下载器 下载器把资源下载下来,并封装成应答包(Response) 爬虫解析Response 解析出实体(Item),则交给实体管道进行进一步的处理 解析出的是链接(URL),则把URL交给调度器等待抓取 Scrapy将功能封装到不同的目录中,具体功能如下: spiders 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面 pipeline 负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。 middlewares 各种中间件,主要处理各个模块之间传输的数据 items 定义一种数据结构,来存储抓取的信息 db 我自己加的,让item流入到数据库中 email_ 我自己加的,爬虫情况发送到邮箱

分析一套源代码的代码规范和风格并讨论如何改进优化代码

与世无争的帅哥 提交于 2019-11-30 23:12:59
  我的工程实践选题是《基于情感词典的文本情感分析》,所以我在github上面下载了一套与其相关的源代码并且进行了分析。 根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点 源代码目录结构     该项目使用python语言进行开发的,其源代码目录结构为:      由图可知该项目的目录结构为2层,有一个专门的文件夹存放项目所需要的测试数据、训练数据以及情感词典。根目录下有数据处理、提取训练主题、测试等python文件,还有项目的结果等。   2.  文件名/类名/函数名/变量名等命名规范   文件名、类名、函数名、变量名等命名都遵守python语言的命名规则,并且其意思都非常明确。例如获取新的情感词的函数。 列举哪些做法符合代码规范和风格一般要求 命名要规范,并且要展示对象的功能 合理的缩进方式,让代价简单整洁 合理的组织代码结构,做到高内聚,低耦合,尽量不要编写重复的代码 少用全局变量 拥有注释说明,对于难理解的代码养成写注释的习惯 列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进 命名不规范,例如随意命名可能会让一些变量的含义不清晰,影响代码的理解。所以所有的变量,方法名和类名都应该遵循骆驼命名法 代码重复,这也会严重影响代码的简洁性

分析一套源代码的代码规范和风格并讨论如何改进优化代码

折月煮酒 提交于 2019-11-30 22:38:26
我的工程实践选题是《关于物联网组网方案的搜索引擎》,属于定向搜索引擎的一种,所以我在 GitHub 上下载了一个搜索引擎相关的源码进行分析。 结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名 /类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点; 源代码目录结构 文件名 / 类名 / 函数名 / 变量名等命名规范 总体来说,命名采取小写字母 + 下划线的组合,但在名称上并不那么容易看懂。 每个函数之前会写明输入与功能,在接口格式上比较规范 列举哪些做法符合代码规范和风格一般要求; 函数前会写明功能, 命名函数 / 类时以英文功能名称来命名,方便阅读 注明了编码格式( 使用 UTF-8 编码 ) 列举哪些做法有悖于 “代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进; 很多核心代码没有注释,不方便阅读与修改 总结同类编程语言或项目在代码规范和风格的一般要求。 1. 命名应该以功能为主,格式要统一规范,方便阅读; 2. 核心代码应有注释,方便后来人学习,改进; 3. 使用 UTF-8 编码 4. 类内方法空 1 行分隔,类外空 2 行分隔 5.1 个前导下划线表示半公开, 2 个前导下划线表示私有,与保留字区分使用单个后置下划线 来源: https://www.cnblogs.com/wjt1996/p

分析一套源代码的代码规范和风格并讨论如何改进优化代码

拜拜、爱过 提交于 2019-11-30 22:17:49
结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点; 我的工程实践题目是 低功耗高可靠文件系统的设计与实现,本项目基于ESP32嵌入式开发平台,设计与实现低功耗、高可靠的文件系统。乐鑫为用户提供完整的软、硬件资源,进行 ESP32 硬件设备的开发。其中,乐鑫的软件开发环境 ESP-IDF 旨在协助用户快速开发物联网 (IoT) 应用,可满足用户对 Wi-Fi、蓝牙、低功耗等方面的要求。因此可以从github上ESP-IDF中直接下载ESP32 使用的 API(软件库和源码)。其主要使用的语言为c语言。但由于是嵌入式开发,因此还需要编写很多的配置文件以及引入官方提供的SDK进行开发。如下图所示: 根据上图可以看到components、docs、examples、make、tools五个文件夹,对它们的介绍如下所示: components :ESP-IDF的核心组件 docs :ESP-IDF相关文档 examples :ESP-IDF提供的示例程序,包括众多外设、Wi-Fi、蓝牙等demo make :EPS-IDF工程管理目录 tools :ESP-IDF提供的工具集 esp-idf里面有一个名字example的文件夹,里面有很多乐鑫例程

gdb layout

爷,独闯天下 提交于 2019-11-30 22:16:36
GDB调试的时候,很多人会忽略一个强大的命令layout。 1. 显示源代码窗口 (gdb) layout src 2. 显示寄存器窗口 (gdb) layout regs 3. 显示汇编代码窗口 (gdb) layout asm 4. 显示源代码和汇编代码 (gdb) layout split 5. 显示窗口的大小 info win 6. 切换到下一个布局模式 layout next 7. 切换到上一个布局模式 layout prev 8. 切换当前窗口 focus cmd/src/asm/regs/next/prev 9. 刷新所有窗口 refresh 10. 更新源代码窗口和当前执行点 update 11. 调整name窗口的高度 winheight name +/- line 来源: https://www.cnblogs.com/leoict2017/p/11642682.html

.net(控制台程序)的项目文件详解

久未见 提交于 2019-11-30 20:57:25
.Net(C#)工程结构图 第一个文件夹:控制台应用程序 .sln文件:资源解决管理方案(可以包含多个工程项目) .suo文件:当前用户在解决方案中的自定义设置和工作状态/配置(例如:设置的初始/默认启动项目) 第一个文件夹的文件 Bin 目录用来存放编译的结果,包含debug文件: .dll引用的类库 .pdb文件包含了编译后程序指向源代码的位置信息,用于调试的时候定位到源代码,主要是用来方便调试的。 .exe文件是可执行文件 .cs 类文件。源代码都写在这里,主要就看这里的代码。 .csproj C#项目文件,用VS打开这个文件就可以直接打开这个项目,自动生成,不需要看。 .Properties文件夹 定义你程序集的属性 ,如果是控制台工程,那就只有一个 AssemblyInfo.cs 文件, AssemblyInfo.cs 用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。 来源: https://www.cnblogs.com/-jwj/p/11639853.html