카테고리 없음

클린코드 교육 #1

Do아 2022. 9. 23. 14:10
728x90

2022/09/21(수)

 

 

 

 

 

 

개발자가 불행해질 때?

1. 코드가 엉망진창일 때

 

  • 소프트웨어 프로페셔널이란?
    • 항상성 = 일관성 (어느 정도 일의 완성도의 보장)
    • 전문성 (말의 무게가 달라짐)

→ 클린 코드를 작성하려면 프로페셔널의 정신이 없으면 만들 수 없다

 

  • 소프트웨어 코드 반감기
    • 코드를 작성했을 때 절반 정도가 바뀌는데 걸리는 시간 = 1년 8개월 1년 10개월 (굉장히 짧다)
    • 이유는 바뀌지 않으면 기술력을 잃어 버리지 않기 위해서 이다
    • 기존에 있던 기술자들이 은퇴하고 나면 만들 수 없다 (잊혀진다)

→ 즉, 항상 유지 보수와 새로운 기능의 신형 코드가 들어가게 된다.

 

  • 코드 재설계
    • 레거시한데는 이유가 있다
    • 왜 코드가 스파게티가 됐을까?
      • 고객의 요구 등으로 인해 수정하다 보면 원래 코드는 사라지고 엉망이 되기도 한다.
    • 깨진 창 이론
      • 들어갈 때 없으니까 코드를 아무 곳이나 넣게 됨

 

  • 코드 리팩터링의 목표
    • 깨끗한 코드를 유지한다
    • 처음 만들 때부터 깨끗한 코드를 만들 수 없다 리팩토링을 통해서 가능하다!
    • 생상성이나 유지 보수성을 늘리기 위해서 작성해야 한다.
    • 지속적인 수정으로 개선하는 수밖에 없다.
 

 

  • 코드는 이해하기 쉬워야 한다.
    • 다른 사람이 그것을 이해하는 데 들이는 시간을 최소화하는 방식 채택
    • 1회용 코드는 되도록 피해야 한다.

 

  • 깨끗한 코드란?
    • 논리가 간단해야 버그가 숨어들지 못함
    • 의존성은 최대한 줄여야 유지 보수 쉬워짐
    • 한 가지를 제대로 해야 한다.
    • 깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
    • 작성자가 아닌 사람도 읽기 쉽고 고치기 쉬움
    • 단위 테스트 케이스와 수용 테스트 케이스 존재
    • 깨끗한 코드는 언제나 주의 깊게 짰다는 느낌을 준다.
    • 클래스, 메소드, 함수 등을 최대한 줄인다.
    • 중복 줄이기(최대 2번만), 표현력 높이기, 초반부터 간단한 추상화 고려하기.

 

  • 이름
    • 이모지를 이름으로 사용한다면? → 식별하기 어려움
    • 특정 단어 사용 : GET(예외가 없는 데이터를 가져올 때), FETCH(통으로 가져올 때), DOWNLOAD(무언가를 다운받아서 ..)
    • CanListenOnPort() 같은 이름이 오류와 내용까지 파악할 수 있다
    • 변수 명에 세부 정보 붙이기 (밀리 초 값 저장이라면 _ms)
    • 사용 범위가 넓으면 긴 이름을 사용
    • 대문자나 밑줄을 의미 있게 활용
    • 의미가 오해 되지 않는 이름이 최선의 이름
    • 상한/하한을 정할 경우 max_, min_을 앞에 접두어로 사용
    • 경계를 포함할 경우 first, last가 좋은 이름
    • 경계의 시작만 포함하고 끝은 포함하지 않을 경우 begin, end가 좋은 이름
    • 불리언(boolean)의 경우 is와 has 사용

 

  • 숙제
    • 맡고 있는 코드의 중복을 체크해보자
    • 코드 중복을 체크하는 프로그램 소나 큐브 .. extension 등
    • code duplication utility를 찾아서 자기 코드를 돌려서 중복도가 몇 퍼센트인지 확인

 

    • 마이클 페더즈에 레거시 코드 활용 전략
728x90