"매 names 매 code 매 most-read interface — 매 정확/예측가능/검색가능 매 핵심 경제재". Casing styles (camelCase, snake_case, PascalCase, kebab-case, SCREAMING_SNAKE) 매 language idiom 매 정해지며 매 semantic precision (boolean prefix is/has, async suffix, no abbreviation) 매 readability 의 진짜 lever.
// 매 BAD
constloading=trueconstvisible=falseconstadult=true// 매 GOOD — predicate-style prefix
constisLoading=trueconstisVisible=falseconstisAdult=trueconsthasPermission=trueconstcanEdit=falseconstshouldRefresh=true
Function naming (verb-first)
// 매 BAD
functionuser(id){/* ambiguous: getter? setter? */}// 매 GOOD
functiongetUser(id){/* read */}functionfetchUser(id){/* network */}functioncreateUser(data){/* persist */}functionupdateUser(id,patch){/* mutate */}functiondeleteUser(id){/* remove */}functionisUserActive(user){/* predicate */}
Async suffix / event handler prefix
// 매 GOOD
asyncfunctionloadDataAsync() {}// 매 optional, depends on team
consthandleClick=()=>{}// React handler
constonClick=()=>{}// 매 component prop
Collection plurality
// 매 BAD
constuser=[u1,u2,u3]// 매 array 인지 single 인지 모호
constuserList=[...]// "List" suffix 매 redundant
// 매 GOOD
constusers=[u1,u2,u3]constusersById=newMap()// shape suffix
constusersByEmail=newMap()
Constants vs config
// 매 SCREAMING_SNAKE — 매 immutable primitive
constMAX_RETRIES=3constAPI_BASE_URL='https://api.example.com'// 매 camelCase — 매 config object (still const)
constapiConfig={baseUrl:'https://api.example.com',timeout: 5000,}
File naming
# 매 React/Vue components
UserProfile.tsx # PascalCase (component)
user-profile.css # kebab-case (asset)
# 매 Python
user_profile.py # snake_case
test_user_profile.py # 매 test_ prefix
# 매 Go
user_profile.go # snake_case
user_profile_test.go # _test.go suffix
# 매 docs
README.md # SCREAMING (convention)
naming-conventions.md # kebab-case
Avoid abbreviation (with exceptions)
// 매 BAD
constusr=...constcfg=...constbtnClkHndlr=...// 매 GOOD
constuser=...constconfig=...consthandleButtonClick=...// 매 OK exceptions — universal abbreviations
id,url,http,json,db,api,ui,css,html,ms(millisecond),idx(loopindex)
Domain prefix vs suffix
// 매 prefix — 매 grouping advantage (autocomplete)
functionuserGet() {}functionuserCreate() {}functionuserDelete() {}// 매 suffix — 매 verb-first natural
functiongetUser() {}functioncreateUser() {}functiondeleteUser() {}// 매 modern preference: verb-first (suffix domain)
URL / API naming
GET /api/users ← kebab plural noun
GET /api/users/{id}
POST /api/users/{id}/orders
GET /api/order-statuses ← kebab compound
# 매 NOT
GET /api/getUser ← verb in URL — 매 X
GET /api/User ← PascalCase — 매 X
GET /api/user_list ← snake — 매 X (web convention)
JSON field convention
// 매 JS-consuming API: camelCase
{"userId":1,"createdAt":"2026-05-10"}// 매 Python/Ruby ecosystem: snake_case
{"user_id":1,"created_at":"2026-05-10"}// 매 cross-platform: pick one + serialize-time transform
언제: 매 새 codebase setup, 매 cross-language API design, 매 linter config, 매 code review checklist.
언제 X: 매 short script (overhead), 매 generated code (machine-driven naming OK).
❌ 안티패턴
Hungarian notation: strName, iCount — 매 type system 매 redundant.
Cryptic abbreviation: getUsrPrf() — 매 readability 의 X.
Inconsistent casing: 매 mixed style 매 한 codebase — 매 cognitive overhead.
Verb in URL: /api/getUser — 매 RESTful 의 X.
Plural type name: Users 매 single user type — 매 misleading.
Negation prefix: isNotReady — 매 double-negative 위험 — isReady + !isReady 사용.
🧪 검증 / 중복
Verified (Airbnb Style Guide, PEP 8, Google Style Guides, Rust API guidelines).