λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

μ±…/CleanCode

✨ Clean Code 5μž₯: ν˜•μ‹ λ§žμΆ”κΈ°

πŸ“Œ ν˜•μ‹μ„ λ§žμΆ”λŠ” λͺ©μ 

μ½”λ“œ ν˜•μ‹μ€ μ˜μ‚¬μ†Œν†΅μ˜ μΌν™˜μœΌλ‘œ μ€‘μš”ν•œ λΆ€λΆ„ 쀑에 ν•˜λ‚˜μ΄λ‹€. 였늘 μž‘μ„±ν•œ μ½”λ“œλŠ” 변경될 κ°€λŠ₯성이 λ†’λ‹€. λ”°λΌμ„œ 였늘 μž‘μ„±ν•œ μ½”λ“œμ˜ 가독성은 μ•žμœΌλ‘œ λ§Žμ€ 영ν–₯을 λ―ΈμΉ  수 μžˆλ‹€. 즉 μœ μ§€λ³΄μˆ˜μ™€ ν™•μž₯성에 영ν–₯을 λ―ΈμΉ  수 μžˆμ–΄ μ½”λ“œ ν˜•μ‹μ— λŒ€ν•΄ 깊게 κ³ λ―Όν•  ν•„μš”κ°€ μžˆλ‹€. μ½”λ“œ ν˜•μ‹μ„ μƒκ°ν•˜μ§€ μ•Šκ³  마ꡬ작이둜 κ°œλ°œν•˜λ‹€ 보면 λ‚΄κ°€ μ§€κΈˆ μ œλŒ€λ‘œ ν•˜κ³  μžˆλŠ”μ§€ μ˜μ‹¬λ§Œ 가득 생길 수 μžˆλ‹€.

πŸ“Œ μ μ ˆν•œ ν–‰ 길이 μœ μ§€ν•˜κΈ°

μ†ŒμŠ€ μ½”λ“œ 길이가 길수둝 μ΄ν•΄ν•˜κΈ° νž˜λ“€λ‹€. μ•„λ¬΄λž˜λ„ 짧은 μ½”λ“œκ°€ μ΄ν•΄ν•˜κΈ° 쉽닀. λŒ€λ‹€μˆ˜ μ‹ λ¬Έ κΈ°μ‚¬λŠ” 짧은 것을 λ³Ό 수 μžˆλ‹€. λ‚ μ§œ, 이름, 사싀 λ“± λ’€μ£½λ°•μ£½ μ„žμ€ 기사λ₯Ό μ½λŠ”λ‹€λ©΄ 금방 읽닀가 포기할 것이닀. μ½”λ“œλŠ” μ‹ λ¬Έ 기사와 κ°™λ‹€. κ°„λ‹¨ν•˜κ³  짧게 이루어져야 ν•œλ‹€.

λŒ€λΆ€λΆ„μ˜ μ½”λ“œλŠ” μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½, μœ„μ—μ„œ μ•„λž˜λ‘œ μ½λŠ”λ‹€. λ§Œμ•½μ— 글을 읽을 λ•Œ 문단과 문단에 행이 κ΅¬λΆ„λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ μ–΄λ–¨κΉŒ? μ•„λ¬΄λž˜λ„ 가독성이 맀우 λ–¨μ–΄μ§ˆ 것이닀. 뿐만 μ•„λ‹ˆλΌ 글쓴이가 무엇을 ν‘œν˜„ν•˜κ³ μž ν•˜λŠ”μ§€ μ΄ν•΄ν•˜κΈ°κ°€ μ–΄λ €μ›Œμ§ˆ 수 μžˆλ‹€. λ”°λΌμ„œ μ½”λ“œλ„ 빈 ν–‰μœΌλ‘œ μ μ ˆν•˜κ²Œ κ΅¬λΆ„ν•˜λŠ” 것이 μ’‹λ‹€. 빈 행은 μƒˆλ‘œμš΄ κ°œλ…μ„ μ‹œμž‘ν•œλ‹€λŠ” 것을 μ‹œμž‘μ μœΌλ‘œ ν‘œν˜„ν•˜κΈ° μ’‹λ‹€. 빈 행이 μ—†μœΌλ©΄ 눈의 초점이 흘렀질 μˆ˜λ„ μžˆλ‹€.

빈 행이 κ°œλ…μ„ λΆ„λ¦¬ν•˜λ©΄ μ„Έλ‘œ λ°€μ§‘λ„λŠ” 연관성을 λœ»ν•œλ‹€. 즉, μ„œλ‘œ λ°€μ ‘ν•œ μ½”λ“œ 행은 μ„Έλ‘œλ‘œ κ°€κΉŒμ΄ 놓아야 ν•œλ‹€. μ•„λž˜ μ½”λ“œλ₯Ό 보면 ν•œλˆˆμ—(?) λ³€μˆ˜κ°€ 2개 있고, λ©”μ„œλ“œκ°€ 1κ°œκ°€ μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€. μ™œλƒν•˜λ©΄ λ°€μ ‘ν•œ 뢀뢄을 κ°€κΉŒμ΄ λ†“μ•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

public class User {
    private String name;
    private int age;
    
    public void hello() {
    	System.out.println("μ•ˆλ…•ν•˜μ„Έμš”!");
    }
 }

 

λ³€μˆ˜λŠ” μ‚¬μš©ν•˜λŠ” μœ„μΉ˜μ— μ΅œλŒ€ν•œ κ°€κΉŒμ΄ μœ„μΉ˜ν•΄μ•Ό ν•œλ‹€. μ‰½κ²Œ 찾을 수 있기 λ•Œλ¬Έμ΄λ‹€.

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ”  클래슀 맨 μ²˜μŒμ— μ„ μ–Έν•œλ‹€. μ—¬λŸ¬ 개의 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ μžˆλ‹€λ©΄ λ³€μˆ˜ 간에 거리λ₯Ό 두지 μ•Šμ•„μ•Ό ν•œλ‹€. C++μ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό 클래슀 λ§ˆμ§€λ§‰μ— μ„ μ–Έν•œλ‹€λŠ” κ°€μœ„ κ·œμΉ™μ„ μ μš©ν•œλ‹€. μžλ°”λ„ λ§ˆμ§€λ§‰μ— μ„ μ–Έν•˜λ“  μ²˜μŒμ— μ„ μ–Έν•˜λ“  상관없닀. κ°€μž₯ μ€‘μš”ν•œ 것은 λ§Žμ€ μ‚¬λžŒλ“€μ΄ λ”°λ₯΄κ³  μžˆλŠ” μͺ½μ„ νƒν•˜λŠ” 것이 λ§žλ‹€κ³  μƒκ°ν•œλ‹€.

쒅속 ν•¨μˆ˜λŠ” ν•œ ν•¨μˆ˜κ°€ λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 것을 λ§ν•˜λŠ”λ° 둜직 μˆœμ„œλ₯Ό 따라 λ°°μΉ˜ν•œλ‹€. λŒ€λΆ€λΆ„ μœ„μ—μ„œ μ•„λž˜λ‘œ 읽기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ λ°°μΉ˜ν•΄μ•Ό μžμ—°μŠ€λŸ½κ²Œ 읽히기 λ•Œλ¬Έμ΄λ‹€.

πŸ“Œ κ°€λ‘œ ν˜•μ‹ λ§žμΆ”κΈ°

λ‚˜λŠ” IntelliJλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”λ° μ•„λž˜ κ·Έλ¦Όμ—μ„œ 였λ₯Έμͺ½μ„ 보면 선이 κ·Έμ–΄μ Έ μžˆλŠ” 것을 λ³Ό 수 μžˆλ‹€. ν•œ ν–‰μ˜ κ°€λ‘œκΈΈμ΄λ„ κ³ λ €ν•΄μ•Ό ν•œλ‹€. 길이가 길어지면 λ‘œμ§μ΄λ‚˜ 행을 μ μ ˆν•˜κ²Œ 뢄리해야 ν•œλ‹€. κ·Έλž˜μ•Ό 읽기 μ‰¬μ›Œμ§„λ‹€.

κ°€λ‘œλ‘œλŠ” 곡백도 μ μ ˆν•˜κ²Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. μ—°μ‚°μžλ₯Ό κ°•μ‘°ν•˜κΈ° μœ„ν•΄ μ•žλ’€μ— 곡백을 λ„£μ–΄μ£Όλ©΄ ν™•μ‹€νžˆ μ™Όμͺ½, 였λ₯Έμͺ½ μš”μ†Œκ°€ λΆ„λ¦¬λœλ‹€. IDEμ—μ„œ ν¬λ§·νŒ… κΈ°λŠ₯을 자주 ν™œμš©ν•˜λ©΄ μžλ™μœΌλ‘œ 정리해쀀닀. 이 κΈ°λŠ₯을 ν™œμš©ν•˜λ‹€ 보면 λ‚˜λ„ λͺ¨λ₯΄κ²Œ 곡백을 λ„£μ–΄μ£ΌλŠ” 버릇을 λ§Œλ“€ 수 μžˆλ‹€.

λ“€μ—¬ 쓰기도 맀우 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•œλ‹€. 주둜 계측을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ λ“€μ—¬ μ“°κΈ°λ₯Ό μ‚¬μš©ν•œλ‹€. λ§Œμ•½μ— λ“€μ—¬ μ“°κΈ°κ°€ μ—†λ‹€λ©΄ 이것은 기계가 읽을 수 μžˆλŠ” μ½”λ“œμ™€(?) λΉ„μŠ·ν•΄μ§ˆ 수 μžˆλ‹€. if, for, whileλ¬Έ, ν•¨μˆ˜μ—μ„œ λ“€μ—¬ μ“°κΈ°λ₯Ό μƒλž΅ν•  수 μžˆλŠ”λ° 책에선 이λ₯Ό μ„ ν˜Έν•˜μ§€ μ•ŠλŠ”λ‹€κ³  ν•œλ‹€.

πŸ“Œ νŒ€ κ·œμΉ™

κ°œλ°œμžλ§ˆλ‹€ μ„ ν˜Έν•˜λŠ” κ·œμΉ™μ„ 가지고 μžˆλ‹€. μ–΄λ–€ μ‚¬λžŒμ€ λ“€μ—¬ μ“°κΈ°λ₯Ό 2칸을 μ„ ν˜Έν•  수 있고, μ–΄λ–€ μ‚¬λžŒμ€ 4칸을 μ„ ν˜Έν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ νŒ€μ— μ†ν•œλ‹€λ©΄ μžμ‹ μ˜ κ·œμΉ™μ€ νŒ€ κ·œμΉ™μ— 따라야 ν•œλ‹€. 제각각 μ„ ν˜Έν•˜λŠ” κ·œμΉ™μ„ μ‚¬μš©ν•˜λ‹€ 보면 ν•˜λ‚˜μ˜ μ†Œν”„νŠΈμ›¨μ–΄λŠ” 일관성을 μžƒμ„ 수 있기 λ•Œλ¬Έμ΄λ‹€.