1. 소스 코드 최적화
- 나쁜 코드(Bad Code)를 배제하고, 클린 코드(Clean Code)로 작성하는 것
- 클린 코드(Clean Code) : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드
- 나쁜 코드(Bad Code) : 로직이 복잡하고 이해하기 어려운 코드
- 스파게티 코드(Spaghetti Code) : 로드의 로직이 서로 복잡하게 얽혀 있는 코드
- 외계인 코드(Alien Code) : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
2. ⭐ 클린 코드 작성 원칙
- 가독성
- 누구든지 코드를 쉽게 읽을 수 있도록 작성
- 코드 작성 시 이해하기 쉬운 용어를 사용하거나 들여쓰기 기능 등을 사용
- 단순성
- 코드를 간단하게 작성
- 한 번에 한 가지를 처리하도록 코드를 작성
- 클래스/메소드/함수 등을 최소 단위로 분리
- 의존성 배제
- 코드가 다른 모듈에 미치는 영향을 최소화
- 코드 변경 시 다른 부분에 영향이 없도록 작성
- 중복성 최소화
- 코드의 중복을 최소화
- 중복된 코드는 삭제하고 공통된 코드를 사용
- 추상화
- 상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용을 하위 클래스/메소드/함수에서 구현
3. 소스 코드 최적화 유형
- 클래스 분할 배치 : 하나의 클래스는 하나의 역할만 수행하도록 응집도 높이기
- 느슨한 결함(Loosely Coupled) : 인터페이스를 이용해 의존성 최소화
- 코딩 형식 준수 : 줄바꿈, 지역변수 맨처음, 호출 - 선배치, 호출됨 - 후배치
- 좋은 이름 사용
- 적절한 주석문 사용
4. 소스 코드 품질 분석 도구
1) 정적 도구 분석
- 코드를 실행하지 않고 코딩 표준, 코딩 스타일, 결함 등 확인하는 코드 분석 도구
- 개발 초기의 결함을 찾는데 사용
- 개발 완료 시점에서는 개발된 소스 코드의 품질 검증하는 차원에서 사용
- 자료 흐름, 논리 흐름 분석을 통해 비정상적인 패턴 찾음
- 발견하기 어려운 결함을 찾아냄
- 코딩의 복잡도, 모델 의존성, 불일치성 등을 분석
- pmd, dppcheck, SonarQube, checkstyle, ccm, cobertura
2) 동적 분석 도구
- 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결합 등을 분석하는 도구
- Avalanche, Valgrind
소스 코드 품질 분석 도구의 종류
종류 | 도구 | 설명 | 지원 환경 |
정적 | pmd | 미사용 변수, 최적화되지 않은 코드 등 결함을 유발할 수 있는 코드 검사 | Linux, Windows |
정적 | cppcheck | C/C++ 코드에 대한 메모리 누수, 오버플로우 등 분석 | Windows |
정적 | SonarQube | 중복 코드, 복잡도, 코딩 설계 등 소스 분석 통합 플랫폼 | Cross-Platform |
정적 | checkstyle | 자바 소스 코드 표준 검사, 다양한 개발도구 통합 사용 가능 | Cross-Platform |
정적 | ccm | 다양한 언어의 코드 복잡도 분석 | Cross-Platform |
정적 | cobertura | 자바 코드 복잡도 분석 및 테스트 커버리지 측정 | Cross-Platform |
동적 | Avalanche | Valgrind 프레임 워크 및 STP 기반으로 구현됨, 프로그램 결함 및 취약점 분석 | Linux, Android |
동적 | Valgrind | 프로그램 내 메모리 및 스레드 결함 분석 | Cross-Platform |
📖 Reference
728x90
반응형
'Certificate > 정보처리기사' 카테고리의 다른 글
[실기 시험 준비]2020 기출 - 4-5회(65/100) (0) | 2024.08.08 |
---|---|
[실기 시험 준비]2021 기출 - 2회(95/100) (0) | 2024.08.06 |
[2과목 소프트웨어 개발] 애플리케이션 테스트 관리 - 064. 복잡도 (Complexity) (0) | 2024.08.02 |
[2과목 소프트웨어 개발] 애플리케이션 테스트 관리 - 063. 애플리케이션 성능 분석 (0) | 2024.08.02 |
[2과목 소프트웨어 개발] 애플리케이션 테스트 관리 - 062. 결함 (Fault) 관리 (0) | 2024.07.31 |