본문 바로가기
코드프레소 체험단/Clean Code

[SW 유지보수성 향상을 위한 Clean Code] Clean Formatting

by 의정부핵꿀밤 2022. 1. 24.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - SW 유지보수성 향상을 위한 Clean Code 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


문학적 프로그래밍

  • Donal Knuth에 의해 주창된 개념이다
  • 코든느 사람이 읽도록 만들어지는 것이 우선이다
  • 문학 작품을 읽는 것처럼 코드를 읽을 수 있도록 만들어져야 한다고 함
  • 프로그래밍이란 컴퓨터가 어떤 동작을 하기 원하는지 "사람에게 설명" 하는 행위이다

 

 

문학적 프로그래밍과 Formatting

딱봐도 오른쪽이 더 읽고 싶지? 웅 나둥

 

 

Code Formatting 이란?

  • Code Formatting은 코드의 가독성과 이해도를 높여주는 일련의 작업이다
  • 수직적 Formatting 원칙과 수평적 Formating 원칙으로 분류된다

 

 

 

수직적(Vertical) Formatting

  • 코드의 위에서 아래로 진행된 흐름과 관련된 코드 작성 규칙이다
  • 코드 라인간의 간격, 밀접한 관계를 갖는 코드 간 그룹화 등이 포함된다

 

 

 

수평적(Horizontal) Formatting

  • 하나의 코드 행에서 왼쪽과 오른쪽으로 진행된 흐름과 관련된 코드 작성 규칙이다
  • 들여쓰기, 코드 간 간격, 코드 행의 넓이 등이 포함된다

 

 

 

Clean Formatting

  • Formatting은 중요하다
    • 코드의 동작에 영향을 미치지는 않지만, 그렇다고 무시해서는 안된다
  • Formatting 만 변경되어도 코드의 가독성은 향상된다
  • 조직 내 Formatting 규칙을 정하고 반드시 모두가 그 규칙을 따라야 한다
  • 언어 별 Style Guide에는 Formatting이 반드시 포함되어 있다
  • Formatting만 변경되어도 코드의 가독성은 향상된다

 

 

 

Clean Formatting의 확인

  • 코드 리뷰
    • 코드 리뷰를 통해 약속된 규칙의 위반 사항들을 체크해야 한다
  • 정적 분석
    • 코드 Style을 체크해주는 정적 분석 도구를 통해 위반 검출을 시스템화 한다
    • 일부 툴 들은 설정을 통해 조직 내에서 원하는 규칙을 점검해주기도 한다
    • CppCheck
    • Check Style
    • xLint

 


수직적 Foramtting

 

 

수직적 Formatting의 목표

  • 수직적 Formatting은 Enter 같은 개행 문자를 이용하여 Formatting 하는 것을 의미한다
  • 마치 신문기사처럼 위에서 아래로 쉽게 읽혀 나갈 수 있는 것을 목표로 한다

 

 

추상화의 수준 순서로 코드를 배치한다

  • 에세이의 작성 순서
    • 제목
    • 요약
    • 큰 그림
    • 다수의 세부 내용
  • 코드 또한 에세이의 순서처럼 고차원에서 저차원 함수로 작성한다

 

 

 

서로 다른 개념은 분리한다

  • 서로 다른 개념은 빈 행을 사용하여 분리한다
  • 글의 문단을 나누듯이 코드의 개념을 분리한다

 

 

유사한 개념은 모아 놓는다

  • 개념적으로 유사한 내용은 빈 행을 사용하지 말고 붙여서 작성한다

 

 

 

관계 있는 내용은 가까운 행에 작성한다

  • 관련 있는 메소드들은 가까이 배치한다
  • 코드를 읽기 위해 여러 번의 Jump를 하는 것을 방지한다
  • Method를 추가할 때는 시간적 순서가 아닌 논리적인 관련성에 따라 배치해야 한다

 


수평적 Formatting

수평적 Formatting의 목표

  • 수평적 Formatting은 코드 한 줄에 대해서 Formatting 하는 것을 의미한다
  • 좌우 횡스크롤링 없이 코드를 읽을 수 있어야 한다
  • 코드 한 줄을 스크롤의 이동 없이 볼 수 있는 것을 목표로 한다 (약 80자)
  • 최근에는 모니터의 크기가 커져 100자~120자도 괜찮다

 

 

수평적 Formatting의 전략

 

 

 

들여쓰기를 적극적으로 활용한다

  • 들여쓰기는 관련 있는 개념들을 논리적인 그룹으로 묶어서 가독성을 향상 시킨다
  • 일부 언어는 들여쓰기가 필수적이다 -> Python

 

 

한 줄의 긴 코드를 여러 줄의 짧은 코드로 분리한다

  • 수평 스크롤링 없이 코드를 읽고 이해할 수 있어야 한다
  • 대부분의 Style Guide에 수평 최대 권장 글자 수가 존재한다
    • Google Java : 100글자
    • PEP8 : 72글자

 

 

수평 정렬은 중요하지 않다

  • 수평 정렬은 해도 상관 없으나 굳이 필요하지는 않다
  • 오히려 이후 수정 시 추가 작업이 필요할 가능성이 높다!

 


Summary : Clean Formatting

  • 좋은 코드는 문학 작품과 같이 읽을 수 있어야 한다
  • Formatting은 동작에는 영향을 미치지 않으나, 가독성에는 크게 영향을 미친다
  • Formatting은 어렵지 않게 할 수 있고, 그에 비해 가독성이 엄청 좋아지는 편이다
  • 조직 내 규칙을 정해야 하고, 모든 개발자는 규칙에 따라 Formatting을 해야 한다
  • 코드 리뷰와 정적 분석 도구를 활용하여 Formatting을 지속적으로 확인해야 한다
728x90

댓글