智能合约最佳实践 之 Solidity 编码规范

每一门语言都有其相应的编码规范, Solidity 也一样, 下面官方推荐的规范及我的总结,供大家参考,希望可以帮助大家写出更好规范的智能合约。

## 命名规范
### 避免使用
小写的l,大写的I,大写的O 应该避免在命名中单独出现,因为很容易产生混淆。
### 合约、库、事件、枚举及结构体命名
合约、库、事件及结构体命名应该使用单词首字母大写的方式,这个方式也称为:帕斯卡命名法或大驼峰式命名法,比如:SimpleToken, SmartBank, CertificateHashRepository,Player。
### 函数、参数、变量及修饰器
函数、参数、变量及修饰器应该使用首单词小写后面单词大写的方式,这个方式也称为:(小)驼峰式命名法,是一种混合大小写的方式,如:
* 函数名应该如:getBalance,transfer,verifyOwner,addMember。
* 参数和变量应该如:initialSupply,senderAddress,account,isPreSale。
* 修饰器应该如:onlyAfter,onlyOwner。
## 代码格式相关
### 缩进
使用空格(spaces)而不是Tab, 缩进应该是4个空格
### 空行
合约之间应该有空行,例如:
```js
contract A {
...
}
contract B {
...
}
contract C {
...
}
```
而不是使用:
```js
contract A {
...
}
contract B {
...
}
contract C {
...
}
```
* 函数之间应该有空行,例如:
```js
contract A {
function spam() public {
...
}
function ham() public {
...
}
}
```
没有实现的话,空行可以省去,如:
```js
contract A {
function spam() public;
function ham() public;
}
```
而不是:
```js
contract A {
function spam() public {
...
}
function ham() public {
...
}
}
```
### 左括号应该跟定义在一行
定义包括合约定义、函数定义、库定义、结构体定义等等,例如推荐使用:
```js
contract Coin {
struct Bank {
address owner;
uint balance;
}
}
```
而不是:
```js
contract Coin
{
struct Bank {
address owner;
uint balance;
}
}
```
### 左括号应该跟条件控制在一行
在使用if, else, while, for 时,推荐的写法是:
```js
if (...) {
...
}
for (...) {
...
}
```
而不是:
```js
if (...)
{
...
}
while(...){
}
for (...) {
...;}
```
如果控制语句内只有一行,括号可省略,如:
```js
if (x 智能合约最佳实践 之 Solidity 编码规范

原文地址:http://blog.51cto.com/13457438/2114948

时间: 2024-10-10 00:58:43

智能合约最佳实践 之 Solidity 编码规范的相关文章

最佳实践之 Android代码规范

命名规范 包命名规范 采用反域名命名规则,包名全部小写,连续的单词只是简单地连接起来,不使用下划线,一级包名为com,二级包名为xxx(可以是公司域名或者个人命名),三级包名根据应用进行命名,四级包名为模块名或层级名.如: com.isa.crm.activity | com.isa.crm.adapter JAVA类命名规范 采用大驼峰式命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写.如: Product | Produ

jquery编程的标准写法和最佳实践(jquery代码规范)

jQuery的加载 1.我们经常用CDN来加载网页,我之前的文章中也多次提及,点击查看使用CDN的好处, <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script>window.jQuery || document.write('<script src=&q

Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式::: replace 成个空格或者使用转义(推荐)... windows的文件名称无效字符.../\:* <>\"| 斜杠,反斜杠,冒号,星号,问号,左右的 尖括号,双引号,树杠...而且..."." 一个点和 ".."双点分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名 Linux的基本上只有反斜杠...

Node 编码规范(优秀是一种习惯)

编码规范 空格与格式 1. 缩进 采用2个空格缩进,而不是tab缩进. 空格在编辑器中与字符是等宽的,而tab可能因编辑器的设置不同.2个空格会让代码看起来更紧凑.明快. 2. 变量声明 永远用var声明变量,不加var时会将其变成全局变量,这样可能会意外污染上下文,或是被意外污染. 在ECMAScript 5的strict模式下,未声明的变量将会直接抛出ReferenceError异常. 需要说明的是,每行声明都应该带上var,而不是只有一个var,示例代码如下: var assert = r

2018年以太坊智能合约开发语言Solidity最佳IDEs

Solidity是一种以智能合约为导向的编程语言.这是一种只有四年的年轻语言,旨在帮助开发基于以太坊数字货币的智能合约. 理解它官方文档应该是学习Solidity的最佳来源:solidity.readthedocs.io 想在以太坊的网络上建立自己的加密货币吗?想拥有自己的初始代码产品吗?以下是您今天可以使用的最佳Solidity IDE. Remix IDE Remix IDE是基于浏览器的,并且集成了编译器.没有服务器端组件. 官网: https://remix.ethereum.orggi

编写Shell脚本的最佳实践,规范二

需要养成的习惯如下: 代码有注释 #!/bin/bash # Written by steven # Name: mysqldump.sh # Version: v1.0 # Parameters : 无 # Function: mysqldump备份mysql # Create Date: 2016-08-27 缩进有规矩 编码要统一 在写脚本的时候尽量使用UTF-8编码 太长要分行 巧用heredocs 学会查路径 script_dir=$(cd $(dirname $0) && pw

solidity开发以太坊代币智能合约

智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助. 以太坊的应用被称为去中心化应用(DApp),DApp的开发主要包括两大部分: 智能合约的开发 用户界面的开发 在本文中,我们将介绍智能合约的开发语言solidity. 让我们先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节. contract SimpleStorage { uint storedData; functi

第18讲 | 智能合约与以太坊

在前面的文章里,我们介绍了区块链的核心技术,也穿插介绍了一些项目.然而每个区块链都有自己的特色,接下来我们将针对每个项目进行详细讲解.今天我们就来讲讲智能合约和以太坊项目. 今天我们从智能合约这个概念入手,聊聊什么是以太坊项目以及它的发展历史.最后还会介绍几款钱包给你,希望通过今天文章的讲解,你也可以尝试在以太坊上编写简单的智能合约. 智能合约的概念 不同于法律意义上的合约概念,区块链领域的合约表达的是可以“自治自理”的 计算机协议,这套协议具有自我执行.自我验证的属性. 如果完全从技术角度来看

【刘文彬】【精解】开发一个智能合约

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/contract.html 智能合约 这两天被老大搞去搬砖,学习计划有变但无大碍,这篇文章将仔细分析智能合约相关内容. 关键字:智能合约,remix,Solidity,truffle,geth,leveldb,datadir,ganache,web3j 合约 合约也称合同.协议,是甲乙双方参与的,制定一系列条目规范双方权利与义务的文件.智能合约是电子化的,自动执行的,去中心化的,具有不可抵赖性,本质上它