主页 > imtoken体验版 > 什么是以太坊代码标准_Go-ethereum代码规范

什么是以太坊代码标准_Go-ethereum代码规范

imtoken体验版 2023-08-06 05:17:14

1.目录结构

本项目主要使用spring管理对象以太坊的字母是什么,使用netty完成通信,使用leveldb存储。 整体包结构如下:

accounts 实现高级以太坊账户管理

bmt 二叉 Merkle 树实现

build主要是编译构建的一些脚本和配置

cmd命令行工具分为很多命令行工具,下面一一介绍。

/abigen 将以太坊合约定义转换为易于使用、编译时类型安全的 Go 包的源代码生成器。

/bootnode 启动一个只实现网络发现的节点

/evm 以太坊虚拟机的开发工具,用于提供可配置的、隔离的代码调试环境

/龙头

/geth 以太坊命令行客户端,最重要的工具

/p2psim 提供模拟http API的工具

/puppeth 用于创建新以太坊网络的向导

以太坊是怎么做起来的_以太坊经典和以太坊_以太坊的字母是什么

/rlpdump 提供 RLP 数据的格式化输出

/swarm swarm 网络的接入点

/util 提供了一些常用的工具

/wnode 这是一个简单的 Whisper 节点。 它可以用作独立的引导节点。 此外,它可以用于不同的测试和诊断目的。

common 提供一些公共工具类

compression PackageRle 为以太坊数据实现游程编码。

consensus 提供了以太坊的一些共识算法,比如ethhash,clique(proof-of-authority)

控制台控制台类

合同

coreEthereum的核心数据结构和算法(虚拟机、状态、区块链、布隆过滤器)

密码加密和哈希算法,

eth 实现以太坊协议

ethclient 为以太坊提供一个 RPC 客户端

以太坊经典和以太坊_以太坊的字母是什么_以太坊是怎么做起来的

ethdb eth的数据库(包括实际使用的leveldb和测试用的内存数据库)

ethstats 提供网络状态报告

event 处理实时事件

les 实现了以太坊的轻量级配置文件

light为以太坊轻客户端实现按需检索功能

log 提供人机友好的日志信息

指标提供磁盘计数器

矿工为以太坊提供区块创建和挖掘

mobile 移动端使用的一些wrapper

node 以太坊的各类节点

p2p 以太坊 p2p 网络协议

rlp 以太坊序列化处理

rpc远程方法调用

以太坊经典和以太坊_以太坊是怎么做起来的_以太坊的字母是什么

蜂群网络处理

测试测试

Trie 以太坊的重要数据结构 Package trie 实现了 Merkle Patricia Tries。

whisper 为 whisper 节点提供协议。

可以看出以太坊的代码量还是挺大的,但是一眼看去,代码结构还是挺不错的。 此外,根目录下还包含一些构建项目的makefile、README等文件。

2.命名、接口定义规范

(一)命名

如上图所示,文件名清晰简洁,以英文和英文缩写为主,符合代码命名的一般规范。 而符合整个应用或包的主入口文件应该是main.go或与应用名称缩写相同的命名规范。

如上图所示,变量命名基本遵循对应的英文表达或缩写,符合驼峰式命名的GoLang语言命名规范。

函数命名符合驼峰命名,函数名是动词或动词短语,如postPayment、deletePage、save。类名是名词或名词短语,属于GoLang语言的命名规范

(2) 接口定义

3.单元测试组织

单元测试文件名为example_test.go,符合命名规范。 测试用例的函数名以Test开头,如TestEventString,符合命名规范。 目录中的单元测试文件紧跟在相应的单元之后。 结合命名规范,对应关系一目了然,简洁明了。

以太坊的字母是什么_以太坊是怎么做起来的_以太坊经典和以太坊

4. GO语言代码规范和风格的一般要求

(一)代码组织结构

a目录只包含一个包,模块复杂拆分成子模块/子目录

b. 内部项目 GOPATH 如果指向多个工作目录。 public项目为第一个工作空间(即go get downloads默认到第一个目录)

c.非测试文件(*_test.go)禁止使用,简化包

d.禁用相对路径导入包

e. 建议使用 goimports 或 IDE 来管理导入

f.project rep需要包含所有代码,依赖库放在vendor下

g.推荐使用Golide、Godep管理第三方包

H。 总而言之:组织架构要精简,一目了然。 允许有多个工作空间,但环境变量的第一个工作空间必须是公共项目。 最好使用工作区。 不要创建具有相对路径的包。 最好使用godep等依赖库控制工具来管理依赖库。 每个项目的所有依赖库最好放在vendor这个目录下。

(2)代码命名规范

一种。 包名命名规则:包名应为小写单词,不要使用下划线或大小写混合。

b. 文件命名:尽量取有意义的文件名,简短而有意义,最好是小写单词,每个单词用下划线分隔。

以太坊是怎么做起来的_以太坊的字母是什么_以太坊经典和以太坊

C。 结构命名:采用CamelCase命名方式,根据访问控制首字母大写或小写。 结构声明和初始化格式采用多行声明。

d. 接口命名:单个函数的接口名以“er”为后缀,接口的实现去掉“er”; 两个函数的接口名合并了两个函数名,以“er”为后缀,接口的实现去掉了“er”。 》;以上三个函数的接口,抽象出这个接口的函数,类似结构体命名。

e. 变量命名:与结构体类似,变量名一般遵循驼峰命名法,首字母大写或小写根据访问控制原则。 但是,遇到专有名词时以太坊的字母是什么,需要遵循以下规则:如果变量是private且专有名词是第一个词,则使用小写,如apiClient,其他情况使用名词原写法,例如 APIClient、repoID 和 UserID。 如果变量类型为 bool 类型,名称应以 Has、Is、Can 或 Allow 开头。 避免多次使用全局变量,for 循环可以使用单个字母。

F。 常量命名:所有常量必须全部由大写字母组成,并使用下划线分词。 如果是枚举类型的常量,需要先创建对应的类型。

G。 总之,文件名、目录名、包名都必须小写。数据类型变量和参数的定义最好使用驼峰式,不要使用下划线或破折号

(3)代码风格

一种。 Indentation and line breaks:Indentation可以直接用gofmt工具格式化(gofmt使用tab缩进); 在换行方面,一行的最大长度不应超过 120 个字符。 如果超出,请使用换行显示,尽量保持格式优雅。

b. 声明的结尾:Go语言和Java类似不需要在结尾加冒号。 默认情况下,一行是一条数据; 如果你打算在同一行写多个语句,它们必须用;隔开。

C。 中括号和空格:关于中括号和空格,也可以直接用gofmt工具格式化(go会强制左大括号不换行,换行会报语法错误),必须留空格所有运算符和操作数之间。

d. 测试:单元测试文件名命名约定为example_test.go。 测试用例的函数名必须以Test开头,例如:TestExample。每个重要的功能都必须先写一个测试用例,测试用例与正式代码一起提交进行回归测试

(4) 工具

一种。 gofmt:大多数格式问题都可以通过 gofmt 解决。 gofmt 自动对代码进行格式化,保证所有的go代码都与官方推荐的格式一致。 因此,所有与格式相关的问题均以 gofmt 的结果为准。

b. go vet:vet工具可以帮助我们静态分析源代码中的各种问题,比如冗余代码、提前返回逻辑、struct标签是否符合标准等。