# 아름다운 코드에 대하여

> Clean Markdown view of GeekNews topic #12348. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=12348](https://news.hada.io/topic?id=12348)
- GeekNews Markdown: [https://news.hada.io/topic/12348.md](https://news.hada.io/topic/12348.md)
- Type: news
- Author: [kciter1](https://news.hada.io/@kciter1)
- Published: 2023-12-15T10:22:40+09:00
- Updated: 2023-12-15T10:22:40+09:00
- Original source: [kciter.so](https://kciter.so/posts/what-is-beautiful-code)
- Points: 32
- Comments: 10

## Topic Body

* 아름다움이란?  
  * 아름다움은 사람이 느끼는 가치  
  * 놀라움, 새로움, 안정성, 편안함, 단순성 등을 주는 것  
  * 놀라운 것과 자연스러운 것으로 나눌 수 있음  
  * 아름다움(깨달음)을 느끼기 위해선 어느정도 기본적인 지식이 필요함  
  * 아름다움은 생존을 위한 것. 이해할 수 없는 것을 보면 불쾌함을 느낌  
* 아름다운 코드에 대한 정의  
  * 코드는 혼자 일하는 것이 아니기 때문에 아름다울수록 좋다  
  * 이상적으론 읽으며 걸리는 부분이 단 하나도 없는 코드  
  * 자연스러운 코드가 좋다  
* 아름다운 코드를 이루는 네 가지  
  * 사회적, 신뢰적, 선형적, 선언적  
    * 사회적이고 신뢰적인 부분은 안정성을 추구  
    * 선형적이고 선언적인 부분은 심미성을 추구  
  * 사회적인 코드  
    * 주변 상황을 모두 고려한 코드  
    * 관습이나 규칙, 미션을 따르는 것  
    * 언어의 사회성과 유사함  
  * 신뢰적인 코드  
    * 믿고 사용할 수 있는 코드  
    * 믿을 수 없다면 직접 확인해야 하는 코드가 됨  
    * 순수 함수, 멱등성, 사이드 이펙트 등을 고려  
    * 사이드 이펙트가 전혀 없을 수는 없기에 문서나 예외가 있음을 알릴 수 있음  
  * 선형적인 코드  
    * 코드를 읽을 때 위에서 아래로 한 번만 읽어도 되는 것  
    * 선형적이면 뇌과학적으로 작업 기억 공간이 처리하기 쉬워짐  
  * 선언적인 코드  
    * 코드가 무엇을 하는지 정확히 알리는 것  
    * 적절한 이름을 지어주는 것이 좋음  
    * 뇌과학적으로 단기 기억 공간이 처리하기 쉬워짐  
* 현실적으로  
  * 아름다운 코드라는 것은 한 번에 뚝딱 나오는 게 아님  
  * 완벽하게 아름다운 코드라는 것은 흔하지 않음  
  * 따라서 점진적 개선과 코드 수식이라는 개념이 필요함  
  * 점진적 개선  
    * 리팩터링을 하는 것  
    * 점검과 개선을 반복하여 70~80%의 품질을 계속 유지하는 것  
    * 언제 점검과 개선을 해야할까?  
      * 코드 오너십이 흐려질 때  
        * 작성된 코드에 대한 지식이 흐려질 때  
      * 악취를 느낄 때  
        * 코드를 볼 때 불편함을 느낄 때  
  * 코드 수식  
    * 코드를 아름답게 보여지도록 꾸며주는 것  
    * 대표적으로 테스트, 코드 리뷰, 문서화, 주석 등이 사용됨  
    * 테스트  
      * 코드를 더 신뢰할 수 있게 만들어줌  
      * 작동을 보장하고 테스트 자체가 문서가 될 수 있음  
    * 코드 리뷰  
      * 검증을 통해 코드를 더 신뢰할 수 있게 만들어줌  
      * 코드 오너십 전파를 하기 때문에 코드의 사회성도 높일 수 있음  
      * 무조건적인 코드 리뷰는 병목이 될 수도 있음  
    * 문서화  
      * 코드를 더 이해할 수 있게 해줌  
      * 문서화를 해야하는 시점은 다른 개발자가 해당 코드에 대한 맥락과 설계, 규칙을 알아야 할 때  
      * UML 같은 도구를 이용하면 더 좋음  
    * 주석  
      * 어쩔 수 없이 생기는 복잡한 코드 영역은 문서보다 주석으로 설명하는 것이 좋음  
* 코드 품질은 중요하지만 아름다운 코드가 꼭 성공을 보장하는 것은 아님  
  * 오히려 설계나 업무 프로세스를 더 고려해야할 수도 있음  
  * 코드 품질이 꼭 제품 품질을 보장하는 것은 아니다

## Comments



### Comment 21502

- Author: elects
- Created: 2023-12-19T09:56:54+09:00
- Points: 1

ㅋㅋㅋㅋㅋㅋ

### Comment 21501

- Author: yangeok
- Created: 2023-12-19T09:54:11+09:00
- Points: 2

사회적인 코드 중요하겠네요 ㅎㅎ

### Comment 21464

- Author: mhj5730
- Created: 2023-12-18T08:20:53+09:00
- Points: 2

잘 정리된 좋은 글이라 생각합니다. 팀내 코드 퀄리티로 이슈가 자주 발생한다면 읽고 모여서 토의하기도 좋을거 같네요.

### Comment 21437

- Author: ryuheechul
- Created: 2023-12-16T04:35:26+09:00
- Points: 2

난해할 수 있는 토픽인데 술술 읽히네요. 감사합니다!

### Comment 21428

- Author: acsdskim2023
- Created: 2023-12-15T15:33:06+09:00
- Points: 2

역시 점진적 개선이 중요하죠. 뭐든 첫술에 배부를 수는 없으니까요.

### Comment 21446

- Author: saalome
- Created: 2023-12-16T18:55:03+09:00
- Points: -2

본인이 짠 코드에 심미적 아름다움을 느끼는 취미는 그냥 개인 관점으로 남아야지. 돈받는 프로가 회사코드를 예술적 관점으로 접근하고 주니어들에게 이상한 마인드나 주입시키는 시니어는 제발 되지 맙시다. 아니면 개발자 때려치고 그림이나 그리던가 뭔 예술타령이야...

### Comment 21482

- Author: pastelcolors
- Created: 2023-12-18T10:41:16+09:00
- Points: 1
- Parent comment: 21446
- Depth: 1

"아름다움" 이라는 단어에 잘못 꽂히셨군요

### Comment 21481

- Author: aiana
- Created: 2023-12-18T10:34:38+09:00
- Points: 2
- Parent comment: 21446
- Depth: 1

제목만 읽는 청년

### Comment 21449

- Author: gcback
- Created: 2023-12-17T07:51:52+09:00
- Points: 2
- Parent comment: 21446
- Depth: 1

ㅎ 좀 많이 오버하긴 했네요
