命名規則
命名規則とは、プログラム内で使用される名前(変数名や関数名など)に一貫性を持たせるためのルールです。これにより、コードの可読性や保守性が向上し、他の開発者がコードを理解しやすくなります。
命名規則は、プログラミング言語ごとに異なることがありますが、多くの言語で一般的に使用される命名規則には、スネークケース(snake_case)、キャメルケース(UpperCamelCase または lowerCamelCase)、ケバブケース(kebab-case)などがあります。
-
スネークケース (snake_case)
単語の間にアンダースコア (_
) を入れる形式。例:example_variable
全て大文字の場合は特に SCREAMING_SNAKE_CASE と呼ばれる。 -
キャメルケース (CamelCase)
単語の先頭を大文字にする形式- UpperCamelCase (PascalCase)
最初の単語の先頭文字は小文字。例:ExampleVariable
- lowerCamelCase
最初の単語の先頭文字は大文字。例:exampleVariable
- UpperCamelCase (PascalCase)
-
ケバブケース (kebab-case)
単語の間にハイフン (-) を入れる形式。例:example-variable
Rust の命名規則
Rust では、スネークケースとアッパーキャメルケースを採用しています。
Rust の命名規則は RFC 430 にまとめられています。
アイテム | 命名規則 |
---|---|
クレート |
snake_case (ただし、単一の単語を優先する) |
モジュール | snake_case |
型 | UpperCamelCase |
トレイト | UpperCamelCase |
列挙型のバリアント | UpperCamelCase |
関数 | snake_case |
メソッド | snake_case |
一般的なコンストラクタ |
new もしくは with_more_details
|
変換コンストラクタ | from_some_other_type |
ローカル変数 | snake_case |
静的変数 | SCREAMING_SNAKE_CASE |
定数 | SCREAMING_SNAKE_CASE |
型パラメータ | 簡潔に UpperCamelCase , 通常は大文字 1 文字: T
|
ライフタイム | 短く、小文字: 'a
|
頭字語の扱い
UpperCamelCase
では、頭字語(USA
や IT
など)は 1 つの単語としてカウントされます。UUID
ではなく Uuid
とします。 Snake_case
では、頭字語は小文字になります。is_XID_start
ではなく is_xid_start
とします。
数字の扱い
UpperCamelCase
の名前では、わかりやすくするために複数の数字を _
で区切ることができます (Windows101709
ではなく Windows10_1709
)。
単一文字の扱い
Snake_case
または SCREAMING_SNAKE_CASE
では、最後の「単語」でない限り、「単語」は単一の文字で構成されてはなりません。 したがって、b_tree_map
ではなく btree_map
が使用されますが、PI2
ではなく PI_2
が使用されます。
具体例
型名
Vec
(ベクター型)、HashMap
(ハッシュマップ型)
// 型名は UpperCamelCase
struct MyStruct {
field: i32,
}
トレイト名
// トレイト名はUpperCamelCase
trait MyTrait {
fn do_something(&self);
}
列挙型のバリアント
// 列挙型のバリアントは UpperCamelCase
enum MyEnum {
VariantOne,
VariantTwo,
}
関数名
// 関数名は snake_case
fn my_function() {
// 函数の内容
}
メソッド名
impl MyStruct {
// メソッド名は snake_case
fn my_method(&self) {
// メソッドの内容
}
}
一般的なコンストラクタ
impl MyStruct {
// 一般的なコンストラクタ
fn new() -> Self {
Self { field: 0 }
}
fn with_more_details(field: i32) -> Self {
Self { field }
}
}
変換コンストラクタ
impl From<OtherType> for MyStruct {
// 変換コンストラクタは from_some_other_type
fn from(other: OtherType) -> Self {
Self { field: other.field }
}
}
ローカル変数
fn main() {
// ローカル変数は snake_case
let my_variable = 10;
}
静的変数と定数
// 静的変数と定数は SCREAMING_SNAKE_CASE
static MAX_VALUE: i32 = 100;
const PI: f64 = 3.141592653589793;
型パラメータ
// 型パラメータは UpperCamelCase、通常は大文字 1 文字
fn generic_function<T>(value: T) {
// 関数の内容
}
ライフタイム
// ライフタイムは短く、小文字
fn lifetime_example<'a>(value: &'a str) {
// 関数の内容
}
おわりに
これらの命名規則に従うことで、Rustのコードは一貫性があり、読みやすく、理解しやすくなります。命名規則は、チーム開発や長期的なプロジェクトにおいて特に重要です。