πŸ“œ CleanCode

[CleanCode]의미 μžˆλŠ” 이름-μ˜λ„λ₯Ό λΆ„λͺ…νžˆ λ°ν˜€λΌ

뉴이 NUEY 2023. 7. 2. 23:38
λ°˜μ‘ν˜•

 

μ½”λ“œλ₯Ό 처음 μ‹œμž‘ν•  λ•Œ ν”νžˆ

int d;	// λ‚ μ§œ

이런 μ‹μœΌλ‘œ ν•œκΈ€μžλ‘œ λ³€μˆ˜λͺ…을 μ μŠ΅λ‹ˆλ‹€.

이름이 μ’€ 길어져도 μƒκ΄€μ—†μŠ΅λ‹ˆλ‹€

 

클래슀/ν•¨μˆ˜/λ³€μˆ˜ 무엇이든 읽자마자 μ–΄λ–€ 것인 지 μ•Œ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

int daySinceCreation;
int fileAgeInDays;

λ„ˆλ¬΄ 길지 μ•Šλ‚˜? 생각할 수 μžˆμ§€λ§Œ 훨씬 λ‚«μŠ΅λ‹ˆλ‹€.

주석이 없어도, λ³€μˆ˜λͺ…을 κΈ°μ–΅ν•˜μ§€ μ•Šμ•„λ„ λ°”λ‘œ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.


 

연속적인 숫자 이름은 μ•„λ¬΄λŸ° 정보λ₯Ό μ œκ³΅ν•˜μ§€ λͺ»ν•œλ‹€

 

public void makeNames(String param1, String param2) { }

param1, param2 ...param4 κΉŒμ§€ ν”νžˆ λ³Ό 수 μžˆλŠ” μž‘λͺ…μž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 아무λ₯Έ μ˜λ„λ₯Ό 읽을 수 μ—†μŠ΅λ‹ˆλ‹€.


λ³€μˆ˜νƒ€μž…μ„ 이름에 넣지 마라(ν—κ°€λ¦¬μ•ˆ ν‘œκΈ°λ²• κΈˆμ§€)
Data, Info, Value λͺ¨λ‘ 금물
List<String> customerData;
List<String> customerInfo;

String nameStr;

int gridRowNum;
int checkedValue;

ν”νžˆ λ³΄μ΄λŠ” λ³€μˆ˜λͺ…λ“€μž…λ‹ˆλ‹€.

List<String> customerList;

String customerName;

int checkedRow;

Data, Info, Str, Num, Valueκ°€ 없어도 κ°œλ°œμžλŠ” μΆ©λΆ„νžˆ νƒ€μž…μ„ μœ μΆ”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

❗ a, an, the도 λ§ˆμ°¬κ°€μ§€λ‘œ λΆˆν•„μš”ν•œ λΆˆμš©μ–΄μž…λ‹ˆλ‹€.

λ°˜λŒ€λ‘œ νƒ€μž…μ„ λͺ…μ‹œν•˜λŠ” 경우

 

Collection νƒ€μž…μ€ λ³€μˆ˜λͺ…에 λͺ…μ‹œν•˜λŠ” 것을 ν—ˆμš©ν•©λ‹ˆλ‹€.

Interfaceλ₯Ό κ΅¬ν˜„ν•˜λŠ” ν΄λž˜μŠ€μ—μ„œλŠ” implement의 μ•½μž Impl을 λΆ™μ΄λŠ” 것을 ν—ˆμš©ν•˜λŠ” νŽΈμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ Interfaceμ—λŠ” 접두어λ₯Ό 뢙이지 μ•ŠλŠ” 편이 μ’‹μŠ΅λ‹ˆλ‹€.

List<String> studentNameList;
HashMap<int, String> studentIdMap;

κ·Έλ¦‡λœ 정보λ₯Ό ν”Όν•˜λΌ

 

μ–΄λ–€ λͺ©λ‘μ„ κ°€μ Έμ˜¨λ‹€κ³  ν•΄λ΄…μ‹œλ‹€.

κ°œλ°œμžκ°€ Mapνƒ€μž… λ³€μˆ˜λͺ…에 List (λͺ©λ‘)을 λ„£λŠ”λ‹€λ©΄?

HashMap<String, String> customerList = new HashMap<String, String>();

 

이후 μ½”λ“œλ₯Ό κ³ μΉ˜λŠ” λ‹€λ₯Έ μ‚¬λžŒμ€ customerList.add()κ°€ μ™œ μ•ˆλ˜λŠ” 지 μž μ‹œ λ‹Ήν™©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


 

μ§κ°μ‚Όκ°ν˜•μ˜ λΉ—λ³€ hypotenuseλ₯Ό μ•½μ–΄λ‘œ hpλ₯Ό λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš©ν•˜λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”.
후에 μ½”λ“œλ₯Ό μ½λŠ” μ‚¬λžŒμ€ hp 기업을 λ¨Όμ € λ– μ˜¬λ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€.
ν˜Όλ™μ„ μ£ΌλŠ” 단어선택은 ν”Όν•˜λŠ” 게 μ’‹μŠ΅λ‹ˆλ‹€.

 

λ°œμŒν•˜κΈ° 쉽고 μ‰¬μš΄ 이름을 μ‚¬μš©ν•˜λΌ

 

책에 λ‚˜μ˜¨ 예제둜 μ‹€μ œ μ–΄λŠ νšŒμ‚¬κ°€ μ‚¬μš©ν–ˆλ˜ λ³€μˆ˜λͺ…이라고 ν•©λ‹ˆλ‹€.

private Date genymdhms;

generate date, year, month, day, hour, minute, second 의 μ•½μžλ‘œμš”.

 

"μ   와이 μ— λ”” 에이취 μ—  μ—μŠ€"

"μ   μ•Ό 무닀 힘즈"

 

직원듀은 λ“±μœΌλ‘œ λΆ€λ₯΄κ³ λŠ” ν–ˆλ‹€κ³  ν•©λ‹ˆλ‹€. 

 

private Date generationTimestamp;

λ§Œμ•½ 이처럼 λ°”κΏ¨λ‹€λ©΄ μ„œλ‘œ λŒ€ν™”ν•˜κΈ° 더 νŽΈν–ˆκ² μ£ .


이름 κΈΈμ΄λŠ” λ²”μœ„ 크기에 λΉ„λ‘€ν•΄μ•Ό ν•œλ‹€
κ²€μƒ‰ν•˜κΈ° μ‰¬μš΄μ΄λ¦„μ„ μ‚¬μš©ν•˜λΌ

 

 

 

널리 μ‚¬μš©λ  수둝 긴이름 λ³΄λ‹€λŠ” 짧은 이름이 μ’‹λ‹€λŠ” λ§μž…λ‹ˆλ‹€.

이름이 λ„ˆλ¬΄ 짧아도 λ¬Έμ œμ΄μ§€λ§Œ, 자주 μ‚¬μš©λ˜λŠ” 클래슀/ν•¨μˆ˜/λ³€μˆ˜λͺ…이 λ„ˆλ¬΄ 길어도 μ‚¬μš©ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€.


접두어_κΈˆμ§€

 

ν΄λž˜μŠ€μ™€ ν•¨μˆ˜λŠ” 접두어 _ κ°€ ν•„μš”μ—†μ„ μ •λ„λ‘œ μž‘μ•„μ•Όν•©λ‹ˆλ‹€.

μ ‘λ‘μ–΄λŠ” μ˜›λ‚ μ— 자주 μ‚¬μš©ν•˜λ˜ μž‘λͺ…법이라고 ν•©λ‹ˆλ‹€.


❗ 이 외에도 ν•œ 단어λ₯Ό 두가지 λͺ©μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것 κΈˆμ§€.

μ’€ 더 의미있게 μ•„λž˜μ²˜λŸΌ μž‘λͺ…ν•  것 등이 μžˆμŠ΅λ‹ˆλ‹€.
city -> addrState 
houseNumber -> addrFirstName

 

 

λ°˜μ‘ν˜•