命名規則やコーディング規約はプログラミングを行うにあたりに重要であることが知られています.
C++は歴史が古く,命名規則やコーディング規約の重要性が認識されるよりも前に数多くのコードが作成されてきました.それゆえ,さまざまなコードでさまざまな命名記法が用いられており,コードが読みにくい一因となっています.
本記事では,私がよく使用しているGoogle C++ Style Guideをもとにした命名規則を記載しています.
目次
命名規則の重要性
「命名規則」は,コーディング規約の一部です.
コーディング規約には,命名規則の他に「プロジェクトの構成」や「コードフォーマットのスタイル」,「禁止事項や制限事項,推奨事項」などがあります.
命名規則の目的は,理解しやすいコードを書くことです.
変数の命名は,プログラマの個性やこだわりが出やすい部分項目です.自分にとって読みやすくても,他人もそうとは限りません.命名規則を設けることで,可読性の向上やコード修正時のコスト低減が図れます.
理解しやすいコード(≒コードの可読性)の詳細に関しては,リーダブルコードなど書籍に記載されていますので,興味がある方は一読するとよいでしょう.
命名規則
代表的な命名記法
命名規則を表現する記法はいくつか存在し,下記に代表的なものを示します.
名称 | 例 |
---|---|
キャメルケース | camelCase |
スネークケース | snake_case |
アッパースネークケース | UPPER_SNAKE_CASE |
ケバブケース | kebab-case |
パスカルケース | PascalCase |
早見表
対象 | 例 | 説明 |
---|---|---|
ファイル名 | my_src.cpp my_header.hpp | スネークケース |
関数名 | my_function() | スネークケース |
クラス名 | MyClass() | パスカルケース |
変数名(全般) | my_var | スネークケース |
メンバ変数名(クラス) | my_var_ | スネークケース+末尾アンダースコア |
メンバ変数名(構造体) | my_var | スネークケース |
名前空間名 | my_namespace | スネークケース |
型名(typedef, using, enumなど) | MyInt , MyDouble , MyEnum | パスカルケース |
列挙型メンバ | ENUM_VAR | アッパースネークケース |
マクロ名 | MACRO_NAME | アッパースネークケース |