命名コンベンション: camelCase vs snake_case vs kebab-case vs PascalCase
JavaScript、Python、Go、SQL、CSS、URL、環境変数における命名コンベンションに関する実践的なガイド。
· 9 分で読めます
コンピュータ科学には2つの難しいことしかありませんキャッシュの無効化と物事の命名です。良い言葉を選ぶことは十分困難です.それから、どのようにそれに加わるかを決めなければなりません。userId、user_id、UserId、user-idとUSER_IDは同じ概念を記述しておりそれぞれどこかで正しいのです。このガイドでは、主要なコンベンション、それぞれが期待される場所、そして、不快なケースの処理方法略語、数字、システム間の境界を説明します。
主要な条約
| 名前 | 例 | 典型的な使用 |
|---|---|---|
| カメラケース | getUserById |
JavaScript/TypeScript変数と関数、Javaメソッド、JSONフィールド |
| パスカルケース | UserProfile |
クラス、タイプ、リアクトコンポーネント、C#方法 |
| snake_case について | get_user_by_id |
Python、Ruby、Rust関数、SQL列 |
| SCREAMING_SNAKE_CASE (鳴き響く蛇のケース) | MAX_RETRIES |
常数、環境変数 |
| カバブケース | user-profile |
URL、CSSクラス、HTML属性、ファイル名、CLIフラグ |
| 列車のケース | Content-Type |
HTTP ヘッダ |
| ドット.ケース | app.server.port |
設定キー、Java パッケージ |
[case converter] ((/tools/case-converter) は、これらのすべての間の任意の名前を一度に翻訳できます。これは、レイヤ間のデータを移動する際に便利です。
言語と文脈によるコンベンション
JavaScript と TypeScript
- 変数、関数、オブジェクト属性
camelCase - クラス、インターフェース、タイプアリアス、リスト、そしてリアクットコンポーネント:
PascalCase。React は、JSX が HTML 要素と区別できるように、コンポーネントが大文字で始まるように要求します。 - 真の定数 (決して変化しない構成):
SCREAMING_SNAKE_CASE、多くのコードベースではconst変数に対してcamelCaseを使用している。 - ファイル名:コンポーネントファイルの場合、しばしば
kebab-case(user-profile.tsx) またはPascalCaseです。ファイル名に小字母が混ざり合えば小字母に敏感でないファイルシステムに問題が生じます
パイソン
PEP 8 は明示的なもので、関数、変数、モジュールについては snake_case、クラスについては PascalCase (PEP 8 は CapWords と呼んでいる)、モジュールレベルの定数については SCREAMING_SNAKE_CASE です。"内部"を意味する_cacheです
行け
Go は camelCase と PascalCase を使っており、case は意味を持ちます.大文字から始まる識別子はパッケージから輸出され、小文字はプライベートです。Goのスタイルでは、userID、HTTPServer、parseURLの略語が大文字になっています。
Java と C#
両方ともクラスに対して PascalCase とローカル変数に対して camelCase を使います。Java はメソッドに camelCase を使います.C# ではメソッドとパブリックプロパティに PascalCase を使います。
腐る
snake_caseは関数、変数、モジュール PascalCaseはタイプ、特質 SCREAMING_SNAKE_CASEは定数、静数。コンパイラが警告します
SQL データベース
snake_caseはテーブルや列の安全な選択です。PostgreSQLでは、引用されていない識別子は小文字に折りたたまれ、"userId"として作成された列は永遠に引用されなければなりませんが、user_idはどこにでも動作します。テーブル名が単数 (user) か複数 (users) かは、チームの好みの問題であり、一致性は選択よりも重要です。
CSSとHTML
CSSプロパティはkebab-case (background-color) であるため、クラス名は通常以下である:.card-header。BEMのような方法論は構造を追加します: .card__title--active。data-*属性を含む HTML属性は、小字・小文字に敏感で、通常はkebab-caseで、JavaScriptでは data-user-id を element.dataset.userId と表現する。
URL
経路には小文字kebab-caseを使用します: /blog/compress-image-to-100kb。Googleはハイフンを単語の分離符として扱いますが、ハイフンを結合符として強調します。URL で大文字を避ける.多くのサーバーは経路を小文字敏感で扱っており、重複コンテンツの問題が生じる。
環境変数
SCREAMING_SNAKE_CASE: DATABASE_URL、STRIPE_SECRET_KEY について。シェルやコンテナプラットフォームはこれを期待しており、一部では変数名にハイフンを全く許さない。
アクロニムとイニシャル
ここがチームで最も争う場所です。parseHTTPResponseかparseHttpResponseか。userIDかuserIdか
- Acronymを単語として扱う (
parseHttpResponse、userId、XmlParser):Microsoftの .NETガイドラインで2文字以上のAcronym、GoogleのJavaとJavaScriptのスタイルガイド、および多くのTypeScriptコードベースで推奨されています。HTTPSURLConnectionのような読み取れない実行を回避し、ケース間をきれいに変換します。parseHttpResponseは自動的にparse_http_responseになります。 - Keep アクロニム大文字 (
parseHTTPResponse、userID): Go で標準で、古い Java や Objective-C コードでも一般的です。
自動変換機は parseHTTPResponse を parse / HTTP / Response と分割し、動作しますが、HTTPSURLConnection は曖昧です。文字の字幕を文字として扱うのはより強力です
名前の数字
その単語にはversion2、utf8Decoder、base64_encode、h1-titleの数字が付いています。識別子を数字で開始することを避ける.ほとんどの言語では禁止されており、数字で始まる CSS クラスは脱出が必要です。
国境を越える:APIとデータベース
現実のシステムでは慣習が混ざり合っています。snake_case の Python バックエンドは、camelCase を期待する JavaScript フロントエンドに snake_case 列の SQL データベースでサポートされます。オプション:
- ワイヤ上のコンベンションを使用します. JSON は
camelCase(JavaScript にマッチする公開 API の最も一般的な選択) またはsnake_case(Python と Ruby のエコシステムで一般的であり、Stripe や GitHub などの API で使用されます) を使用することを決定します。文書化してどこにでも適用してください - エッジで変換する. シリアライゼーションライブラリでは、Pydanticのエイリアスジェネレーター、ジャクソンの
PropertyNamingStrategiesまたはORMの列マッピングを自動的に変換できます。それぞれの層の内側では代名詞が保持されます - 負荷を混ぜないで下さい
{ "userId": 1, "created_at": "..." }は両者の最悪です
[JSON to TypeScript guide] (※/blog/json-to-typescript-interfaces) に含まれているJSONからTypeScript型を生成する際には、プロパティ名をワイヤーに表示されているように正確に保持し、必要に応じてマッピング層で変換します。
良い言葉を選ぶ
ケーススタイルは簡単です。単語のルールについて
data、infoとitemは何も言わない。invoiceLinesは多くのことを教えてくれます- 関数に対して動詞と値に対して名詞を使用します.
calculateTotal()はtotalを返します。 - *
isActive、hasAccess、shouldRetryを質問として表します。 - ユニットを含みます.
timeoutMs、maxSizeBytes、durationSecondsはバグのクラスをすべて防ぐ。 - 略語は、普遍的なもの (
id、url、html) でない限り、避ける。usrCntは4人の文字を節約し読者に1瞬の費用がかかります - ドメインの言語をマッチします. ビジネスに"サブスクリプション"と書いてある場合は、コードで
planと呼ばないでください。
条約の執行
コンベンションを書き下ろし、ツールで実行させてください: ESLint の @typescript-eslint/naming-convention ルール、Python の Pylint と Ruff、golint と go vet、Rust の内蔵リント、CSS クラスのパターンのスタイルリント。自動化によるチェックは、コードレビューにおける議論を終わらせ、大規模なコードベースを一貫性 있게します。
まとめ
JavaScript の値に camelCase、タイプやコンポーネントに PascalCase、Python、Rust、SQL に snake_case、URL、CSS、ファイル名に kebab-case、コンスタンタや環境変数に SCREAMING_SNAKE_CASE を使用します。可能な限り単語を単語として扱います単位の名前を名前で保存し APIごとにコンベンションを選びますそしてリンターがルールを守らせて人間が良い言葉を選ぶことに集中できるようにします
このページは英語から自動翻訳されています。誤りを見つけた場合はお知らせください。