Skip to content

Commit

Permalink
add: πŸ“° [Item 68] 일반적으둜 ν†΅μš©λ˜λŠ” λͺ…λͺ… κ·œμΉ™μ„ λ”°λ₯΄λΌ
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinminjin committed May 12, 2024
1 parent 1b6066f commit cc5d096
Showing 1 changed file with 111 additions and 0 deletions.
111 changes: 111 additions & 0 deletions _posts/effective-java/chapter9/2024-05-12-item68.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
title: Item 68 - 일반적으둜 ν†΅μš©λ˜λŠ” λͺ…λͺ… κ·œμΉ™μ„ λ”°λ₯΄λΌ
date: 2024-05-12 14:07:00 +0900
categories: [μ΄νŽ™ν‹°λΈŒ μžλ°”, chapter9]
tags: [μ΄νŽ™ν‹°λΈŒ μžλ°”]
---

## **μžλ°” μ–Έμ–΄μ˜ λͺ…λͺ… κ·œμΉ™ 🎯**

> μ² μžμ™€ 문법 두 λ²”μ£Όλ‘œ λ‚˜λ‰œλ‹€.
## **철자 κ·œμΉ™ βœ”οΈ**

- νŒ¨ν‚€μ§€, 클래슀, μΈν„°νŽ˜μ΄μŠ€, λ©”μ„œλ“œ, ν•„λ“œ νƒ€μž… λ³€μˆ˜μ˜ 이름을 닀룬닀.
- νŠΉλ³„ν•œ μ΄μœ κ°€ μ—†λŠ” ν•œ **λ°˜λ“œμ‹œ 따라야 ν•œλ‹€.**

### **νŒ¨ν‚€μ§€ λͺ…λͺ…법**

- `.`으둜 κ΅¬λΆ„ν•˜μ—¬ κ³„μΈ΅μ μœΌλ‘œ 이름을 μ§“λŠ”λ‹€.
- 보톡 인터넷 도메인 이름을 μ—­μˆœμœΌλ‘œ μ‚¬μš©ν•œλ‹€.
- ex) `edu.cmu`, `com.google`
- ν‘œμ€€ 라이브러리 및 선택적 νŒ¨ν‚€μ§€λ“€μ€ `java`와 `javax`둜 μ‹œμž‘ν•œλ‹€.
- 이름은 보톡 8자 μ΄ν•˜μ˜ 짧은 단어 ν˜Ήμ€ μ•½μ–΄λ‘œ ν•œλ‹€.
- `utilities` β†’ `util`
- `abstract window toolkit` β†’ `awt`

### **ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ λͺ…λͺ…법**

- μ—΄κ±°νƒ€μž…, μ• λ„ˆν…Œμ΄μ…˜λ„ 클래슀 ν˜Ήμ€ μΈν„°νŽ˜μ΄μŠ€λ‘œ λ³Έλ‹€.
- 각 λ‹¨μ–΄λŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•œλ‹€.
- 널리 ν†΅μš©λ˜λŠ” μ€„μž„λ§(max, min λ“±)을 μ œμ™Έν•˜κ³ λŠ” 단어λ₯Ό 쀄여 쓰지 μ•ŠλŠ”λ‹€.
- μ•½μžμ˜ 경우, 첫 κΈ€μžλ§Œ λŒ€λ¬Έμžλ‘œ 할지 μ•½κ°„μ˜ λ…ΌμŸμ΄ μžˆμœΌλ‚˜, 첫 κΈ€μžλ§Œ λŒ€λ¬Έμžλ‘œ ν•˜λŠ” 게 μ•Œμ•„λ³΄κΈ° μ’‹λ‹€.
- ex) `HttpUrl` vs `HTTPURL`
- 전체λ₯Ό λŒ€λ¬Έμžλ‘œ ν•˜λ©΄ μ–΄λ””μ„œ λŠμ–΄ 읽어야 ν•˜λŠ”μ§€ ꡬ뢄이 μ–΄λ ΅λ‹€.

### **λ©”μ„œλ“œμ™€ ν•„λ“œ 이름 λͺ…λͺ…법**

- 첫 κΈ€μžλ₯Ό μ†Œλ¬Έμžλ‘œ ν•˜λŠ” 것 μ΄μ™Έμ—λŠ” 클래슀, μΈν„°νŽ˜μ΄μŠ€ λͺ…λͺ…법과 λ™μΌν•˜λ‹€.
- ex) `remove()`, `ensureCapacity()`

### **μƒμˆ˜ ν•„λ“œ λͺ…λͺ…법**

- μƒμˆ˜ ν•„λ“œλž€?
- `enum`의 μ—΄κ±° 이름듀
- `static final` μ ‘κ·Ό μ œμ–΄μžλ‘œ ν‘œν˜„λ˜λŠ” ν•„λ“œ
- λͺ¨λ‘ λŒ€λ¬Έμžλ‘œ μ“°λ©°, 단어 μ‚¬μ΄λŠ” λ°‘μ€„λ‘œ κ΅¬λΆ„ν•œλ‹€.
- ex) `VALUES`, `NEGATIVE_INFINITY`

### **지역 λ³€μˆ˜ λͺ…λͺ…법**

- λ¬Έλ§₯μ—μ„œ 의미λ₯Ό μ‰½κ²Œ μœ μΆ”ν•  수 μžˆλŠ” κ²½μš°μ— ν•œν•΄ μ•½μ–΄λ₯Ό 써도 λœλ‹€.
- μž…λ ₯ λ§€κ°œλ³€μˆ˜λ„ 지역 λ³€μˆ˜μ˜ μΌμ’…μœΌλ‘œ λ³Έλ‹€.

### **νƒ€μž… λ§€κ°œλ³€μˆ˜(μ œλ„€λ¦­) λͺ…λͺ…법**

- T: μž„μ˜μ˜ νƒ€μž…μ„ λ§ν•œλ‹€.
- E: μ»¬λ ‰μ…˜ μ›μ†Œμ˜ νƒ€μž…μ„ λ§ν•œλ‹€.
- K, V: 맡의 킀와 값을 λ§ν•œλ‹€.
- X: μ˜ˆμ™Έλ₯Ό λ§ν•œλ‹€.
- R: λ©”μ„œλ“œμ˜ λ°˜ν™˜ νƒ€μž…μ„ λ§ν•œλ‹€.
- T, U, V, T1, T2, T3: μž„μ˜μ˜ νƒ€μž… μ‹œν€€μŠ€λ₯Ό λ§ν•œλ‹€.

## **문법 κ·œμΉ™ βœ”οΈ**

- 철자 κ·œμΉ™κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ, 더 μœ μ—°ν•˜κ³  λ…Όλž€λ„ λ§Žλ‹€.

### **ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€**

- 객체λ₯Ό 생성할 수 μžˆλŠ” 클래슀(μ—΄κ±° νƒ€μž… 포함)의 이름은 λ‹¨μˆ˜ λͺ…μ‚¬λ‚˜ λͺ…사ꡬλ₯Ό μ‚¬μš©ν•œλ‹€.
- ex) `Thread`, `PriorityQueue`, `ChessPiece`
- 객체λ₯Ό 생성할 수 μ—†λŠ” 클래슀라면, 보톡 λ³΅μˆ˜ν˜• λͺ…μ‚¬λ‘œ μ§“λŠ”λ‹€.
- ex) `Collectors`, `Collections`
- μΈν„°νŽ˜μ΄μŠ€μ˜ 이름은 ableν˜Ήμ€ ible둜 λλ‚˜λŠ” ν˜•μš©μ‚¬λ‘œ μ§“κ±°λ‚˜ ν΄λž˜μŠ€μ™€ λ˜‘κ°™μ΄ μ§“λŠ”λ‹€.
- ex) `Runnable`, `Iterable`, `Accessible` / `Collection`, `Comparator`

### **μ• λ„ˆν…Œμ΄μ…˜**

- μ• λ„ˆν…Œμ΄μ…˜μ€ 지배적인 κ·œμΉ™ 없이 λͺ…사, 동사, μ „μΉ˜μ‚¬, ν˜•μš©μ‚¬ 두루 μ“΄λ‹€.
- ex) `BindingAnnotation`, `Inject`, `ImplementedBy`, `Singleton`

### **λ©”μ„œλ“œ**

- λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” λ©”μ„œλ“œμ˜ 이름은 λ™μ‚¬λ‚˜ λ™μ‚¬κ΅¬λ‘œ μ§“λŠ”λ‹€.
- ex) `append`, `drawImage`
- `boolean`값을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œλŠ” 보톡 isλ‚˜ has둜 μ‹œμž‘ν•˜κ³ , λͺ…사, λͺ…사ꡬ, ν˜Ήμ€ ν˜•μš©μ‚¬λ‘œ κΈ°λŠ₯ν•˜λŠ” 아무 λ‹¨μ–΄λ‚˜ ꡬ둜 λλ‚˜λ„λ‘ μ§“λŠ”λ‹€.
- ex) `isDigit`, `isProbablePrime`, `isEmpty`, `isEnabled`, `hasSiblings`
- λ°˜ν™˜ νƒ€μž…μ΄ `boolean`이 μ•„λ‹ˆκ±°λ‚˜, 속성을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œλŠ” λͺ…사, λͺ…사ꡬ, ν˜Ήμ€ `get`으둜 μ‹œμž‘ν•˜λŠ” λ™μ‚¬κ΅¬λ‘œ μ§“λŠ”λ‹€.
- ex) `size`, `hashCode`, `getTime`
- 객체의 νƒ€μž…μ„ λ°”κΏ”μ„œ λ‹€λ₯Έ νƒ€μž…μ˜ 같은 λ‚΄μš©μ˜ 객체λ₯Ό λ°˜ν™˜ν•  λ•ŒλŠ” `toType`ν˜•νƒœλ‘œ μ§“λŠ”λ‹€.
- ex) `toString`, `toArray`
- 객체의 λ‚΄μš©μ„ λ‹€λ₯Έ 뷰둜 λ³΄μ—¬μ£ΌλŠ” λ©”μ„œλ“œλŠ” asType ν˜•νƒœλ‘œ μ§“λŠ”λ‹€.
- ex) `asList`
- 객체의 값을 κΈ°λ³Έ νƒ€μž… κ°’μœΌλ‘œ λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œμ˜ 이름은 보톡 `typeValue` ν˜•νƒœλ‘œ μ§“λŠ”λ‹€.
- ex) `intValue`
- 정적 νŒ©ν„°λ¦¬
- ex) `from`, `of`, `valueOf`, `instance`, `getInstance`, `newInstance`, `getType`, `newType`

### **ν•„λ“œ**

- ν•„λ“œ 이름은 클래슀, μΈν„°νŽ˜μ΄μŠ€, λ©”μ„œλ“œ 이름에 λΉ„ν•΄ 덜 λͺ…ν™•ν•˜κ³  덜 μ€‘μš”ν•˜λ‹€.
- `boolean` νƒ€μž…μ˜ ν•„λ“œ 이름은 보톡 `boolean` μ ‘κ·Όμž λ©”μ„œλ“œμ—μ„œ μ•ž 단어λ₯Ό λΊ€ ν˜•νƒœμ΄λ‹€.
- ex) `initialized`, `composite`
- λ‹€λ₯Έ νƒ€μž…μ˜ ν•„λ“œλΌλ©΄ λͺ…μ‚¬λ‚˜ λͺ…사ꡬλ₯Ό μ‚¬μš©ν•œλ‹€.
- ex) `height`, `digits`, `bodyStyle`
- 지역 λ³€μˆ˜λ„ ν•„λ“œμ™€ λΉ„μŠ·ν•˜κ²Œ μ§€μœΌλ©΄ λ˜λŠ”λ°, 쑰금 더 λŠμŠ¨ν•˜λ‹€.

## **πŸ’‘ 핡심 정리**

- ν‘œμ€€ λͺ…λͺ… κ·œμΉ™μ„ μ²΄ν™”ν•˜μ—¬ μžμ—°μŠ€λŸ½κ²Œ λ² μ–΄ λ‚˜μ˜€λ„λ‘ ν•˜μž.
- 철자 κ·œμΉ™μ€ 직관적이라 λͺ¨ν˜Έν•œ 뢀뢄이 적은 데 λ°˜ν•΄, 문법 κ·œμΉ™μ€ 더 λ³΅μž‘ν•˜κ³  λŠμŠ¨ν•˜λ‹€.
- μ˜€λž«λ™μ•ˆ λ”°λΌμ˜¨ κ·œμΉ™κ³Ό μΆ©λŒν•œλ‹€λ©΄ κ·Έ κ·œμΉ™μ„ λ§Ήμ‹ ν•˜μ§€ 말고 상식이 μ΄λ„λŠ”λŒ€λ‘œ λ”°λ₯΄μž.

0 comments on commit cc5d096

Please sign in to comment.