본문 바로가기

백엔드 개발자 기록 일람/정보처리기사 준비 기록

소스 코드 최적화

▼소스 코드 최적화

읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것을 의미한다.

 

★클린코드와  베드코드

소스 코드 품질을 위해  기본적으로 지킬 원칙과 기준을 정의한다.

클린 코드 베드 코드
깔끔하게 잘 정리되어 있는 코드. 중복 코드 제거로 애플리케이션의 설개가 개선되고 가독성이 높아 애플리케시션의 기능이해가 용이하며, 버그를 찾는 속도의 향상 및 개발속도가 빨라 진다.
클린 코드 최적화 원칙: 가독성, 독창성,  단순성, 의존성   배제, 중복성 최소화,   추상화.
스파게티 코드라고도 불리는 것으로다른 개발자가 로직을 이해하기 어렵게 작성된 코드로 변수와 메소드에 대한 명칭을 알키힘들며, 동일한 처리  로직이  중복하게 작성되어 있는 것을 의미한다.
유형: 보기좋은  배치, 작은 함수, 분석가능한 제어 흐름,  오류  처리, 간결한 주석,  의미있는 이름. 유형: 오렴, 문서 부족, 의미없는 이름, 높은 결합도, 아키텍처 침식

 

★스파게티 코드

처리 로직의 제어가 체계화되어  있지  않고 스파게티 면처럼 서로 얽혀 있는 코드이다. 소스 코드  이해  부족으로  인하여 코드를 계속 덧붙이기 할 경우 코드 복잡도가 증가하고 잦은 오류가 발생할 가능성이 있다.

 

★코드의 간결성 유지 지침

공백을 이용하여 실행문 그룹과  주석을 명확히 구분하고, 복잡한 논리식과  산술식은 괄호와 들여쓰기를 통해 명확히 표현한다. 빈줄을 사용하여 선언부와 구현부를 구별하고 한줄에 되도록 작은 문장을 코딩한다.

 

★클린 코드의 작성 원칙

가독성: 이해하기 쉬운 용어를 사용하고 들여쓰기 등을 활용하여 코드를 쉽게 읽을 수 있도록 작성한다.

단순성: 클래스/메소드/함수는 최소 단위로 분리해 한 번에 한 가지 기능만 처리한다.

의존성  배제: 다른 모듈에 미치는 영향을 최소화하여 코드 변경 시 다른 부분에 영향 없도록 작성한다.

중복성  최소화: 중복된 코드는 삭제하여 공통된  코드로 사용한다.

추상화: 상위 클래스/메소드/함수에서  간략하게 애플리케이션 특성을 나타내고, 상세  내용은 하위 클래스/메소드/함수에서 구현한다.

 

★외계인 코드

오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이어려운 프로그램을 의미한다.

 

★소스 코드 최적화 유형

클래스 분할 배치: 하나의 클래스는 하나의 역활만 수행하도록 응집도를 높이도록한다.

모듈 크기를 작게 작성한다.

좋은 이름 사용:  변수나 함수 이름은  네이밍 룰을 정의하여 기억하기  좋고, 규칙성 있게  사용한다.

코딩 형식 준수: 개념적 유사성 높은 종속 함수를 사용하여 논리적으로 코드를 라인별로 구분하여  가독성을 높인다.

호출하는 함수는 앞쪽에 배치,호출되는 함수는 뒤쪽에 배치하고, 지역변수는 각 함수 맨 처음에 선언한다.

느슥한 결합: 클래스 간 의존성 을 느슨하게 하기 위해 인터페이스 클래스를 이용하여 추상화된 자료 구조와 메소드를 구현한다.

적절한  주석:  코드의 간단한 기능 안내 및 중요 코드를 표시할  떄 적절히 사용한다.

 

▼소스코드 품질 분석

★소스코드 품질 분석 도구

소스 코드의 코딩 스타일,  코드에 설정된 코드 표준, 코드의 복잡도, 코드에 존재하는 메모리 누수 현상, 스레드 결함  등을 발견하기위해 사용하는 분석도구이다.

 

정적 분석  도구

- pmd, cppcheck, SonarQube, checkstyle, ccm, cobertuna

도구 설명 지원환경
pmd 소스 코드에 대한 미사용 변수, 최적화되지 않은 결함을 유발할 수 있는 코드 검사 Linux, Windows
cppcheck C/C++ 코드에대한 메모리 누수, 오버플로 분석 Windows
SonarQube 중복코드, 복잡도, 코딩설계 등을 분석 Cross-Platform
checkstyle - 자바 코드 표준 검사
- 다양한 개발도구에 통합 사용 가능
Cross-Platform
ccm 다양한 언어의 복잡도 분석 Cross-Platform
cobertuna 자바 언어의 소스코드 복잡도 분석 및 테스트 커버리지 측정 Cross-Platform

 

동적 분석 도구

- Avalanche, Valgrind

도구 설명 지원환경
Avalanche - Valgrind 프레임워크 및 STP 기반 구현
- 프로그램의 결함 및 취약점 분석
Linux, Android
Valgrind 프로그램의 메모리 및 쓰레드 결함 분석 Cross-Platform

 

★정적 분석과 동적 분석 기술 비교

분류 정적 분석 동적 분석
대상 소스코드 실제 애플리케이션
평가 기술 오염 분석,  패턴 비교 애플리케이션 실제 실행
단계 애플리케이션 개발단계 애플리케이션   개발 완료 단계

'백엔드 개발자 기록 일람 > 정보처리기사 준비 기록' 카테고리의 다른 글

인터페이스 구현 -2-  (0) 2024.07.09
인터페이스 구현 - 1 -  (0) 2024.06.28
애플리케이션 성능 개선  (0) 2024.05.16
결함 관리  (0) 2024.05.15
통합 테스트  (0) 2024.05.09