免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Sway 命名规范(Naming Convention)完整指南:CapitalCase、snake_case 与 SCREAMING_SNAKE_CASE

Sway 命名规范(Naming Convention)完整指南:CapitalCase、snake_case 与 SCREAMING_SNAKE_CASE Sway 命名规范Naming Convention完整指南CapitalCase、snake_case 与 SCREAMING_SNAKE_CASE【免费下载链接】sway Empowering everyone to build reliable and efficient smart contracts.项目地址: https://gitcode.com/GitHub_Trending/sw/swaySway 是 Fuel 生态中用于编写可靠、高效智能合约的领域特定语言。在 Sway 中命名规范Naming Convention是一组用于标准化代码书写方式的规则它决定了结构体、枚举、trait、变量、函数与常量各自应遵循的大小写风格。本篇指南以 name-convention.md 为骨架结合仓库内的可运行示例与相关文档系统讲解 Sway 的三种命名风格及其适用场景帮助你在编写合约时写出风格统一、可读性高、符合社区惯例的代码。命名规范概览命名规范是一组用于标准化代码书写方式的规则。统一的命名风格让代码库更易阅读、更易检索也能帮助编译器与工具链如格式化工具稳定地理解代码结构。在 Sway 中命名风格主要分为三种风格形态适用对象CapitalCase每个单词首字母大写单词直接相连如MultiSignatureWallet结构体struct、trait、枚举enumsnake_case全部小写单词之间用下划线连接如authorize_user模块module、变量variable、函数functionSCREAMING_SNAKE_CASE全部大写单词之间用下划线连接如MAXIMUM_DEPOSIT常量constant这三种风格共同构成了 Sway 的命名体系下面逐一展开。CapitalCase结构体、trait 与枚举CapitalCase意味着每个单词的首字母大写、单词之间不加分隔符。在 Sway 中结构体、trait 和枚举 均使用CapitalCase。需要特别注意的是结构体内部的字段应使用snake_case而**枚举内部的变体variant**应使用CapitalCase。也就是说CapitalCase规则作用于类型名和枚举变体名字段名则遵循snake_case。仓库中的示例 lib.sw 完整展示了这一规则struct MultiSignatureWallet { owner_count: u64, } trait MetaData { // code } enum DepositError { IncorrectAmount: (), IncorrectAsset: (), }在这个例子中MultiSignatureWallet使用CapitalCase符合结构体命名要求其字段owner_count使用snake_case符合字段命名要求MetaDatatrait 使用CapitalCase枚举DepositError以及其变体IncorrectAmount、IncorrectAsset均使用CapitalCase而每个变体所携带的负载类型()照常书写。与枚举风格指南的呼应这一“类型名CapitalCase、字段snake_case”的约定在 style-guide/enums.md 中同样被强调。该文档建议优先使用独立非嵌套的枚举因为它们易于理解且行文简短若使用嵌套枚举则需要导入所有涉及的枚举如Error、StateError、UserError且代码行可能因命名过长而难以阅读。由此可见保持枚举名精炼、风格统一是 Sway 风格指南的一贯主张。snake_case模块、变量与函数snake_case意味着每个单词全部小写并用下划线分隔。在 Sway 中模块module、变量variable与函数function均使用snake_case。模块名模块名使用snake_case。在 lib.sw 中库的声明即为library;这行library;声明表示该文件是一个库模块其模块名由Forc.toml中的name字段决定。在配套的 Forc.toml 中可以看到该库被命名为letter_casing[project] authors [Fuel Labs contactfuel.sh] entry lib.sw license Apache-2.0 name letter_casing [dependencies] std { path ../../../../../../../sway-lib-std }letter_casing正是典型的snake_case命名——全部小写、单词间用下划线连接。函数与变量函数与变量同样使用snake_case。示例代码fn authorize_user(user: Identity) { let blacklist_user false; // code }这里函数名authorize_user与局部变量blacklist_user均遵循snake_case。关于函数声明的完整组成fn关键字、唯一名称、括号内的可选参数及其类型、可选的返回类型可以参考 functions/index.md关于变量声明与可变性的细节可以参考 variables/index.md。SCREAMING_SNAKE_CASE常量SCREAMING_SNAKE_CASE意味着每个单词全部大写并用下划线分隔。在 Sway 中常量constant使用SCREAMING_SNAKE_CASEconst MAXIMUM_DEPOSIT 10;常量与命名规则的补充说明结合 variables/const.md 可知Sway 中的常量与不可变let变量相似但有几点差异常量始终在编译期求值常量既可以在函数内部声明也可以在全局作用域或impl块中声明常量不能使用mut关键字。此外常量还可以在impl块中作为关联常量associated constant声明例如struct Point { x: u64, y: u64, } impl Point { const ZERO: Point Point { x: 0, y: 0 }; } fn main() - u64 { Point::ZERO.x }无论常量声明在何处SCREAMING_SNAKE_CASE的命名约定都始终适用MAXIMUM_DEPOSIT、ZERO这类名称能够让读者一眼识别出它们是编译期常量。命名规范在示例项目中的落地上述全部示例都收录在仓库的可运行示例库中letter_casing 示例项目其目录结构为docs/reference/src/code/language/style-guide/letter_casing/ ├── Forc.lock ├── Forc.toml └── src/ └── lib.sw其中 lib.sw 通过// ANCHOR: .../// ANCHOR_END: ...注释划分出module、const、structures、function_case四个代码片段分别对应本文上述的模块声明、常量、结构体/trait/枚举以及函数与变量的命名示例。这种 ANCHOR 机制被 mdbook-forc-documenter 之类的文档生成工具所使用可以确保文档中展示的代码与仓库真实源码保持同步、永不脱节。如果想在自己的项目里验证这些命名规则可以在本仓库之外新建一个 Forc 项目将上述示例代码放入src/main.sw或src/lib.sw并使用forc build或forc check编译编译器会基于真实的类型系统验证每个名称的类型正确性。总结Sway 的命名规范可以概括为一句话类型层面用CapitalCase值层面用snake_case常量用SCREAMING_SNAKE_CASE。具体而言结构体、trait、枚举及其变体CapitalCase如MultiSignatureWallet、DepositError::IncorrectAmount结构体字段、模块、变量、函数snake_case如owner_count、authorize_user常量SCREAMING_SNAKE_CASE如MAXIMUM_DEPOSIT。遵循这套约定配合 style-guide 中的其他条目如结构体字段初始化简写、枚举使用偏好、中间变量命名等你就能写出风格一致、便于团队协作与工具链处理的 Sway 代码。【免费下载链接】sway Empowering everyone to build reliable and efficient smart contracts.项目地址: https://gitcode.com/GitHub_Trending/sw/sway创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表