code-naming
Skill14 starsChanged 37 days agoMITView on GitHub
コードの識別子(変数・関数・メソッド・クラス・型・ファイル)に名前を付けるときに使う。get の濫用をやめ、何をして値を得るのかが名前から読み取れる状態にする。実装時と、実装計画でメソッド名・クラス名を決めるときの両方で使う。
2 other projects use a version of this.
Adopted by
Most recently taken up by
- smileynet/code-spicetheir own version, first seen Oct 13, 2026
- luabagg/agent-skillstheir own version, first seen Aug 29, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- luabagg/agent-skills★ 3same name
- smileynet/code-spice★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- code-commentsSkill
- codex-plan-review-loopSkill
- codex-pr-review-loopSkill
- explain-visuallySkill
- github-pr-review-draftSkill
The file
Files
コードの命名
名前は、そのコードを読む全員が最初に読む説明文である。名前が処理を語らなければ、読み手は本体を読むまで何も分からず、コストも副作用も見誤る。
適用範囲
- 本スキルが決めるのは語の選び方だけ。大文字小文字の書式(キャメルケース/スネークケース/パスカルケース)は、言語とプロジェクトの規約に従う。
- プロジェクトにコーディング規約がある場合、規約全体はそちらを優先する。ただし命名については本スキルを優先する。
- 次の2つは本スキルより優先する。名前を選ぶ余地が無いため。
- 言語機能として要求される名前(プロパティ、アクセサ、特殊メソッド、テストの命名規約など)
- 標準ライブラリ・フレームワーク・外部ライブラリが既に定めている名前
- 新しく書く名前に適用する。 既存の名前は、改名が依頼の範囲に含まれるときだけ直す。範囲外の一括改名は、変更差分を膨らませてレビューを困難にする。
名前を決める手順
- 何をするものかを日本語で1文にする。 「〜を取得する」で終わるなら、まだ処理を理解できていない。どこから、どうやって、その結果何が起きるかまで書く。
- その1文の動詞を英語の動詞に置き換える。 迷ったら
references/verbs.mdから選ぶ。 - 対象を名詞で書く。 汎用的すぎないかを規則3で確認する。
- 修飾語が要るかを判断する。 時間軸・状態・不確実性などは
references/modifiers.mdを見る。 - 声に出して読む。 英文として成立しない名前は、読み手の頭の中でも成立しない。真偽値なら
ifの条件に置いて読む。
規則
1. get を新しく書かない
「取得する」は処理の内容を何も語らない。データベースを引くのか、計算するのか、保持済みの値を返すのか、外部サービスを呼ぶのかが名前から消え、呼び出し側がコストと失敗の可能性を見誤る。
何をして値を得るのかを動詞にする。
| やること | 動詞 |
| 保存先から読み込む | load |
| ネットワーク越しに取りに行く | fetch |
| 条件に合うものを探す | find / search |
| 一覧をまとめて返す | list |
| 材料から組み立てる | build / compose |
| 計算して求める | calculate / count |
| 複数の材料から1つに決める | resolve / determine |
| 別の形に変換して返す | to〜 / convert |
| 中から一部を取り出す | extract |
| 無ければ作って返す | findOrCreate |
例外は適用範囲に挙げた2つ(言語機能としてのアクセサ、既存ライブラリが定めた名前)だけ。それ以外で get を書きたくなったら、手順1に戻って処理を1文で説明し直す。
2. 処理の重さを名前で偽らない
軽い名前(値を返すだけに見える名前)の中に、入出力・ネットワーク通信・繰り返し処理を入れない。逆に、読み込むだけの処理に重い印象の動詞を付けない。名前と実際のコストがずれると、呼び出し側がループの中で呼んでしまう。
3. 目的に沿った名前にする(目的駆動名前設計)
Product(商品)のように広い名前は、予約・注文・在庫・発送のあらゆるロジックを引き寄せ、1つのクラスが肥大する。何の関心事を扱うのかを名前に入れる。
Product→ReservedItem(予約) /StockItem(在庫) /ShippingItem(発送)- 名前を分けることが、そのまま責務を分けることになる。
次の語は、責務が定まらないまま何でも入る器になりやすい。使う前に、何をするものかを名詞で言い直す。
| 避ける語 | 直し方 |
〜Manager / 〜Controller(MVC の Controller を除く) | 何を管理するのかを動詞化して分割する |
〜Util / 〜Helper | 対象となる型の名前を冠した専用クラスにする |
〜Data / 〜Info / 〜Item / 〜Type | 外して意味が通るなら外す。通らないなら中身が定まっていない |
data / result / temp / flag | 実際に入っているものを書く(isSuccess / newId / mappedRows など) |
4. 真偽値は if の条件として英文になる形にする
判定基準は1つ。== true を付けないと文として成立しない名前は使わない。
| 型 | 例 |
is + 形容詞/過去分詞 | isEmpty / isChanged |
has + 名詞/過去分詞 | hasObservers / hasSent |
can + 動詞の原形 | canUpdate |
should + 動詞の原形 | shouldRetry |
needs + 名詞/動詞 | needsMigration |
| 三人称単数の動詞(+名詞) | exists / contains / existsError |
避ける形は3つ。check〜(真のとき何が起きるのかが読めない)、is + 動詞の原形(isFail ではなく isFailed)、原形の動詞 + 名詞(existError ではなく existsError)。
詳細と反例は references/booleans.md。
5. 意味の広すぎる動詞を避ける
check / change / process / handle / manage / do は、何が起きるのかを読み手に想像させる。実際の動作を書く。
checkUser→validateUser/userExists/isUserActivechangeStatus→activateUser/cancelOrder/markAsReadprocessOrder→chargeOrder/shipOrder
比較する compare も結果の意味が読めない。equals / contains / isOlderThan のように、判定結果が名前で決まる形にする。
6. 対になる操作は対になる語で書く
片方だけ別系統の語を使うと、対応関係が読めなくなる。
add / remove、insert / delete、create / destroy、open / close、start / stop、enable / disable、show / hide、lock / unlock、push / pop、connect / disconnect、attach / detach、acquire / release、encode / decode、publish / subscribe
7. 省略しない
一文字の変数名と、その分野で確立していない略語を使わない。nm は name か number か読み手には分からない。
例外は、ごく短い範囲のループ変数(i など)と、確立した略語(id / url / http / db / json)。
8. 品詞を揃える
- クラス・型・変数は名詞、関数・メソッドは動詞から始める。
- インタフェースは、性質を表す形容詞(
Iterable/Closeable)か、役割を表す名詞(〜Repository/〜Sender)にする。 - 配列・コレクションは複数形、その要素は単数形にする(
buttonsの要素はbutton)。 - コールバックは、いつ呼ばれるかを名前に入れる(
onCompleted/beforeUpdate/afterSave)。
書き上げたあとのチェック
getで始まる新しい名前が残っていないか- 名前だけ読んで、入出力・ネットワーク通信の有無が判断できるか
- クラス名・型名が広すぎて、複数の関心事のロジックが入り込んでいないか
- 真偽値の名前を
ifの条件に置いて読んだとき、英文として成立するか check/change/data/result/temp/flagが残っていないか- 対になる操作が、対になる語で書かれているか
- 略語・一文字の名前が、範囲を超えて使われていないか
- 複数形と単数形が、実際の中身と一致しているか
- 同じ意味に複数の語を混在させていないか(
fetchとloadを同じ意味で併用していないか)
リファレンス
references/verbs.md— 動詞の使い分け。値を得る/作る/保存する/消す/探す/変換する/検査する/非同期/コレクション操作。references/booleans.md— 真偽値の命名6型と反例3型、否定形の扱い。references/class-names.md— クラス・インタフェースの役割を表す名詞。層ごとの語彙と、避けるべき名前。references/modifiers.md— 修飾語。時間軸・階層・状態・数量・不確実性・注意喚起。
出典
以下を突き合わせて整理した。原典に当たる必要が生じたときはここを見る。
- プログラミングでよく使う英単語のまとめ https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923
- メソッド名の付け方 https://qiita.com/KeithYokoma/items/2193cf79ba76563e3db6
- クラス名の付け方 https://qiita.com/KeithYokoma/items/ee21fec6a3ebb5d1e9a8
- Boolean 型の命名 https://qiita.com/uehiro22/items/7a2b0b3b72f458018632
- JavaScript の命名テクニック 初級編 https://ics.media/entry/220915/
- JavaScript の命名テクニック 上級編 https://ics.media/entry/220929/
- 規則3の「目的駆動名前設計」は『良いコード/悪いコードで学ぶ設計入門』(仙塲大也)第10章の考え方による。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

