プログラミングコードを書く際のメソッドや変数の名前は、リーダビリティ(可読性)を向上させるためにも非常に大切です。
そのため、それぞれのプログラミング言語には命名規則のガイドラインがあることも多く、言語によって多少の違いがあります。
そこで、今回はSolidityの公式ドキュメントに記載されている命名規則について解説していきたいと思います。
本記事は、Solidity公式ドキュメントに記載されているものを参考に執筆しています。
先に述べておきますが、1つ注意点としては、ここに記載してある命名規則が正解でルールではないということです。
どちらかというとより良いコードのためのガイドライン的な役割として捉え、プロジェクト内での一貫性を保つ方が大切になりますので、その点はご留意ください。
命名スタイル5つ
まずは、命名する際のパターンを紹介しておきます。
- lowercase
- UPPERCASE
- UPPER_CASE_WITH_UNDERSCORES
- CapitalizedWords
- mixedCase
それぞれのケースを軽く以下で解説します。
lowercase
ローワーケースと呼ばれ、全て小文字で命名するパターンです。
UPPERCASE
アッパーケースと呼ばれ、全て大文字で命名するパターンです。
UPPER_CASE_WITH_UNDERSCORES
アッパーケース・ウィズ・アンダースコアといい、全て大文字かつ単語間はアンダースコアで繋げて命名パターンです。
一般的には「スネークケース」と呼ばれます。(スネークケースは大文字でなくても構いません)
CapitalizedWords
キャピタライズ・ワーズといい、単語の頭文字を大文字にして命名するパターンです。
一般的には「パスカルケース」と呼ばれています。
mixedCase
ミックスド・ケースといい、2つ目以降の単語の頭文字を大文字にして命名するパターンです。
一般的には「キャメルケース」と呼ばれています。
以上5つの命名パターンを使って、どのように命名するのがガイドラインとして薦められているのかを以下で解説していきます。
以下では、上記のパターンをもとに解説していきます。
各要素の命名ガイドライン
以下で、functionやstructなど各要素ごとでの命名規則についてご紹介していきます。
ContractとLibrary
ContractやLibraryの命名はCapWords
で行うようにします。
例:SmartBank, CertificateHashRepository, Player, Congress, Owned など
また、ContractやLibrary名はファイル名と一致するようにします。
struct
structを定義する際はCapWords
で記述するようにします。
例:MyStruct, Position など
Event
eventsの定義の場合もCapWords
を使って命名するようにします。
例:Deposit, Transfer, BeforeTransfer, AfterTransfer など
function(関数)
関数の命名はmixedCase
で行うのが良いようです。
例:getBalance, transfer, verifyOwner など
関数引数(function arguments)
関数の引数の命名も関数と同じくmixedCase
で行うようにします。
例:initialSupply, account, newOwner など
ローカル・ステート変数
ローカル変数やステート変数もmixedCase
で命名するのが良いようです。
例:totalSupply, remainingSupply, balancesOf, isPreSale など
定数(constant)
定数の名前は全て大文字で、単語同士は「_(アンダースコア)」で繋げて記述します。
例:MAX_BLOCKS, TOKEN_NAME, TOKEN_TICKER, CONTRACT_VERSION など
modifier
modifierの命名にはmixedCase
を使うようにします。
例:onlyOwner, onlyAfter, onlyDuringThePreSale など
enum
enumの命名は、CapWords
を使うことが推奨されています。
例:TokenGroup, Frame, HashStyle, CharacterLocation など
まとめ:公式ガイドラインのSolidity命名規則を解説
今回は、Solidity公式ドキュメントに記載されている命名規則ガイドラインについて解説しました。
一通り見て感じられたと思いますが、特にSolidity特有の規則などはなく他のプログラミング言語とさほど変わらない印象かと思います。
なので、他の言語に親しみのある方は特に意識せずとも命名規則に沿ったネーミングができるかと思います。
良いSolidityコードを書くために少しでもこの記事が役に立てば幸いです。
コメント