본문 바로가기

코드프레소 체험단

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

코드프레소 Java 웹 개발 체험단 활동 중

코드프레소 이러닝 강의 수강 - 실무자가 알려주는 Git 활용한 프로젝트 관리

코드프레소 URL: https://www.codepresso.kr/

 

Clean Code에 대한 서로 다른 시각

  • 코드의 품질은 매우 주관적일 수 있는 주제이기 때문에, 개인마다 Clean Code의 기준이 다를 수 있다
  • 개개인마다 좋은 코드에 대한 서로 다른 정의와 수준을 갖고 있으며, 갖고 있지 않기도 하다
  • SW는 다수의 개발자들이 협업하여 만들기 때문에 코드 품질, SW 품질에 대한 서로 다른 시각은 품질 향상의 걸림돌이 된다.

바라보는 시각이 다르기 때문에 표준이나 엄격한 정의는 없지만, 대가들의 아이디어에서 힌트를 얻을 수 있다.

 

왜 Clean Name이 중요할까?

  • 우리는 개발의 약 75%의 시간을 코드를 읽고 이해하는데 사용한다
  • 변수, 상수, 함수, 클래스, 파일 등 SW의 주요 요소는 이름을 갖고 있다
  • 좋은 이름은 내부를 들여다보지 않아도 동작과 목적을 쉽게 이해할 수 있다
  • 좋은 이름을 사용하면 코드를 읽는 사람의 인지적 부하를 최소화할 수 있다

Clean Naming 원칙

이해하기 쉬운 좋은 이름은 읽는 사람의 인지적 부하를 최소화시킨다
  • Function, Class 역할이 명확하면 Naming도 명확해진다
  • 불필요한 정보/반복은 제거해야 한다
  • 줄임말(약어)를 사용하지 않는다
  • 규칙과 일관성은 중요하다
  • 동료와 상의해라

Clean Class Naming 원칙

  • 구체적이고 명확한 이름을 사용하라
  • Convention을 준수하는 일관성 있는 이름을 사용하라
  • 보편 언어를 활용하라

번외로 소프트웨어 엔지니어는 복잡한 현실의 문제 (도메인)을 잘 파악한 후 설계와 코드에 반영해야 하는데, 현실은 그렇지 못하다. 따라서 도메인 전문가와 커뮤니케이션을 통해 서로 간에 이해한 개념을 코드에 녹여내는 도메인 주도 개발 방법도 있다.

 

Clean Method

  • Method/Function은 SW에서 가장 기본이 되는 모듈이다
  • Method를 호출하는 사람이 사용하기 용이해야 한다
  • Method를 유지보수하는 사람이 이해하고, 변경하기 용이해야 한다
  • Method를 유지보수하는 사람이 테스트하기 용이해야 한다

하나의 Method는 동일한 추상화의 수준만 가져야 한다

  • 추상화의 수준(Level of Abstraction)이란?

  • 가장 높은 레벨은 비즈니스 적 측면에서의 기능을 얘기한다
  • 가장 낮은 레벨은 디테일한 HOW를 제공해주는 코드를 얘기한다
  • 그 사이에는 수많은 레벨이 존재하지만, 반드시 동일한 레벨 또한 존재한다

 

 

추상화의 수준

Higher Level vs Lower Level

 

 

하나의 Method는 동일한 추상화의 수준만 가져야 한다

 

 

 

Method의 이름이 책임지는 범위의 일만 해야 한다

 

 

 

이름의 책임을 벗어나는 Bad Smell