ㅇ 클린코드
- 코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 한다.
- 가독성이 높은 코드
** 가독성을 높이려면
- 네이밍이 잘 되어야 한다.
- 오류가 없어야 한다.
- 중복이 없어야 한다.
- 의존성을 최대한 줄여야 한다.
- 클래스 혹은 메서드가 하나의 일만 처리한다.
클린코드를 만들기 위한 규칙
- 네이밍
변수, 클래스, 메서드의 의도가 분명한 이름을 사용한다.
잘못된 정보를 전달할 수 있는 이름은 사용하지 않는다.
범용적으로 사용되는 단어X
연속된 숫자나 불용어를 덧붙이는 방식은 피한다. - 주석 달기
코드를 읽는 사람이 코드를 작성한 사람만큼 잘 이해할 수 있도록 도와야한다.
반드시 달아야 할 이유가 있는 경우에만 작성한다.
빠르게 유추할 수 있는 코드에는 사용하지 않는다. - 꾸미기
보기좋게 배치하고 꾸민다. 보기 좋은 코드가 읽기 좋다.
규칙적은 들여쓰기와 줄바꿈
일관성 있고 간결한 패턴을 적용한 줄바꿈
메서드를 이용해 불규칙한 중복코드 제거 - 흐름제거 만들기
왼쪽에는 변수를, 오른쪽에는 상수를
부정이 아닌 긍정을 다룬다.
if/else를 사용하며 삼항 연산자는 간단한 경우에만 사용한다.
do/while 루프의 사용은 피한다. - 착한 함수
함수는 가급적 작게, 한번에 하나의 작업만 수행하도록 하자
ㅇ 리팩토링
- 프로그램의 외부 동작은 그대로 둔 채 내부의 코드를 정리하며 개선하는 것
- 레거시 코드를 클린 코드로 만드는 것
- 리팩토링은 코드의 가독성을 높이고, 향후 유지보수에 큰 도움이 된다.
리팩토링이 필요한 경우
- 메서드 정리
그룹으로 묶을 수 있는 코드, 수식을 메서드로 변경한다. - 객체 간의 기능 이동
메서드 기능에 따른 위치 변경, 클래스 기능을 명확히 구분한다. - 데이터 구성
캡슐화 기법을 적용해 데이터 접근 관리 - 조건문 단순화
조건 논리를 단순하고 명확하게 작성 - 메서드 호출 단순화
메서드 이름이나 목적이 맞지 않을 때 변경 - 클래스 및 메서드 일반화
동일 기능 메서드가 여러 개 있으면 수퍼 클래스로 이동
** 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것 즉 개발 속도를 향상시킨다.'
진행방법
아키텍처 관점 시작 > 디자인 패턴 적용 > 단계적으로 하위 기능에 대한 변경으로 진행
> 의도하지 않은 기능 변경이나 버그 발생을 대비해 회귀테스트 진행
클린코드와 리팩토링의 차이는?
리팩토링이 더 큰 의미를 가진다. 클린 코드는 단순히 가독성을 높이기 위한 작업이라면, 리팩토링은 클린 코드를 포함한 유지보수를 위한 코드 개선이다.
클린 코드와 같은 점은 설계부터 잘 이루어져 있는 것이 중요하고 결과물이 나온 이후 수정이나 추가 작업이 진행될 때 개선해 나가는 방법이 올바른 방법이다.
ㅇ 시큐어 코드
안전한 소프트웨어를 개발하기 위해 소스코드 등에 존재할 수 있는 잠재적인 보안약점을 제거하는 것
보안 약점을 노려 발생하는 사고사례들
- SQL 인젝션 취약점으로 개인유출 사고 발생
- URL 파라미터 조작 개인정보 노출
- 무작위 대입공격 기프트카드 정보 유출
'Software Engineering' 카테고리의 다른 글
Third Party (2) | 2024.10.23 |
---|---|
DevOps (1) | 2024.10.23 |
OOP 객체 지향 프로그래밍(Object-Oriented Programming) (1) | 2024.10.23 |
애자일(Agile) 방법론 (1) | 2024.10.23 |
TDD(Test-Driven Development) (0) | 2024.10.23 |