클린코드
설명
- 코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 함.
- 가독성
- 단순하고 직접적이며 읽기 쉬운 코드.
- 최대한 적은 라인으로 구현한 코드.
필요성
- 클린코드 ( 읽기 쉬운 코드 ) 는 개발 기간을 단축하는 효과적인 방법이 될 수 있음.
- 코드를 읽는 시간 : 코드를 짜는 시간 = 10 : 1
규칙 및 특징
- Naming 네이밍
- 변수, 클래스, 메소드에 의도가 분명한 이름을 사용한다.
- 범용적으로 사용되는 단어나 연속된 숫자, 불용어를 붙이는 방식은 지양.
- Comment 주석 달기
- 코드를 읽는 사람이 코드를 작성한 사람만큼 잘 이해할 수 있도록.
- 반드시 달아야할 경우에만 작성.
- 주석이 없어도 코드가 읽기 쉬운 것이 베스트.
- Aesthetics 꾸미기
- 들여쓰기와 줄바꿈에 일관성 있고 간결한 패턴을 적용.
- 메소드를 이용해 불규칙한 중복 코드 제거.
- 클래스 내부에서도 여러 그룹으로 나누기.
- Making Control flow easy to read 흐름 제어 만들기.
- 조건문
- 왼쪽에 변수, 오른쪽에 상수
- 부정이 아닌 긍정을 다룸. ex. a!=b 가 아닌 a==b
- if/else를 사용. 삼항 연산자는 간단한 경우에만.
- do/while은 지양.
- Function 착한 함수
- 함수는 최대한 작게, 한 번에 하나의 작업만 수행하도록 작성.
리팩토링
설명
- 레거시 코드 (테스트가 불가능하거나 어려운 코드)를 클린 코드로 만드는 방법.
- 프로그램 외부 동작은 그대로, 내부 코드를 정리하며 개선.
- 코드 가독성을 높이고, 향후 유지보수에 도움.
대상
- 중복된 코드
- 긴 메서드
- switch case문. 중복이 생기므로.
- 불필요한 주석
- 조건문 단순화 - 조건 논리를 단순하고 명확하게 작성.
- 데이터 구성 - 캡슐화 기법으로 데이터 접근 관리.
- 객체 간 기능 이동 - 메소드 기능에 따른 위치 변경, 클래스 기능 명확히 구분
- 메소드 호출 단순화 - 메소드 이름이나 목적이 맞지 않을 때 변경
- 메소드 정리 - 그룹으로 묶을 수 있는 코드, 수식을 메소드로 변경
과정
-
아키텍처 관점 시작 -> 디자인 패턴 적용 -> 단계적으로 하위 기능에 대한 변경
-
버그 발생, 기능 변경 대비하여 회귀 테스트 진행
-
코드 인스펙션 code inspection : 작성한 개발 소스 코드를 분석하여 개발 표준에 위배되었거나 잘못 작성한 부분 수정
-
개발 과정에서 리팩토링은 개발 기간을 늘리게 될 수 있음. 완성된 코드에 대해 리팩토링 권장.
시큐어코딩
설명
- 소프트웨어 개발 보안
- 안전한 소프트웨어 개발을 위해 소스코드의 잠재적인 보안 취약점 제거.
방법
- 도출 -> 설계 -> 구현(개발) -> 테스트 -> 릴리즈
- 구현(개발) 단계에서 잠재적 보안 취약점 사전 제기, 발견.
사용 이유
- 경제적 이점

보안 약점 사고
- SQL 인젝션 취약점으로 개인 정보 유출 사고
- URL 파라미터 조작 개인 정보 노출
- 무작위 대입 공격 기프트카드 정보 유출
한 줄 요약
클린코드
- 의도를 밝힐 수 있는 변수명, 메서드명 지정하여 최대한 단순하고 명확하게 코드를 통해 나타내는 방법
리팩토링
- 완성된 기능 혹은 프로젝트의 외부 동작을 바꾸지 않고, 내부적 구조만 개선 및 변경하는 방법
시큐어코딩
- 구현 단계에서 보안 취약점을 제기 및 발견하여 해킹 및 악의적 공격을 미연에 방지, 보안 약점 제거
레퍼런스
https://gyoogle.dev/blog/computer-science/software-engineering/Clean%20Code%20&%20Secure%20Coding.html
https://github.com/Songwonseok/CS-Study/blob/main/CommonSense/%ED%81%B4%EB%A6%B0%EC%BD%94%EB%93%9C%26%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%26%EC%8B%9C%ED%81%90%EC%96%B4%EC%BD%94%EB%94%A9.md