1. 이해하기 쉬운 코드 개발
Hong Hyo Sang
“ 이해하기 쉬운 코드는 버그가 적다. “
2. I. 이해 하기 쉬운 코드
Contents
1. 조건문
2. 매직 넘버
3. Collection 객체 사용
4. NullPointException
5. 유연한 추상 타입
6. 변경 할 수 없는 값에 대해서는 Final
7. Null 객체 반환
8. Collection객체는 Stream사용
9. 복잡한 조건은 메소드 참조
10. Optional 사용
3. 1. 조건문
불필요한 코드 제거, 부정 패턴, 표현식 간소화, NullPointExecption 피하기, 대칭적 방법으로 구조화 하면 코드가 짧아지고 이해하기 쉬워 진다.
If문은 항상 괄호를 사용하여 블록을 쉽게 알아 볼 수 있도록 한다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/GoodCondition.java
4. 1. 조건문
불필요한 코드 제거, 부정 패턴, 표현식 간소화, NullPointExecption 피하기, 대칭적 방법으로 구조화 하면 코드가 짧아지고 이해하기 쉬워 진다.
If문은 항상 괄호를 사용하여 블록을 쉽게 알아 볼 수 있도록 한다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/GoodCondition.java
NullPointExecption
5. 1. 조건문
불필요한 코드 제거, 부정 패턴, 표현식 간소화, NullPointExecption 피하기, 대칭적 방법으로 구조화 하면 코드가 짧아지고 이해하기 쉬워 진다.
If문은 항상 괄호를 사용하여 블록을 쉽게 알아 볼 수 있도록 한다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/GoodCondition.java
public void 사용자권한 {
If (알수 없는 사용자 이면 ) {
권한 처리 ;
} else if (일반 사용자 이면 ) {
일반 사용자 처리;
} else if ( 슈퍼 사용자 이면 ) {
슈퍼 사용자 처리
}
}
public void 사용자권한 {
If (알수 없는 사용자 이면 ) {
권한 처리 ;
return;
}
if (일반 사용자 이면 ) {
일반 사용자 처리;
} else if ( 슈퍼 사용자 이면 ) {
슈퍼 사용자 처리
}
}
6. 2. 매직 넘버
코드안의 숫자 집합은 표현상 의미가 없는 숫자는 프로그램의 동작을 제어하게 되므로 의미를 부여 하기 위해서 상수로 대체 되어야 하고
의미 있는 집합의 상수는 열거형으로 표현 하면 이해하기 쉬운 코드가 된다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/MagicNumber.java
7. 2. 매직 넘버
코드안의 숫자 집합은 표현상 의미가 없는 숫자는 프로그램의 동작을 제어하게 되므로 의미를 부여 하기 위해서 상수로 대체 되어야 하고
의미 있는 집합의 상수는 열거형으로 표현 하면 이해하기 쉬운 코드가 된다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/MagicNumber.java
8. 3. Collection 객체 사용
Collection 객체를 사용 하는 경우 순환 처리 하기 위해서 For문을 사용하면 인덱스의 변경을 유발 할 수 있으면 순환 처리를 객체를 변경 하여 원
하지 않는 결과를 가지고 다른 방법으로 접근을 해야 함
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/MagicNumber.java
** 순환문 내부에 pattern을 사용 하는 경우는 compile 후 사용 하면 한번 컴피일 후 사용 할 수 있음
9. 4. NullPointException
NullPointException은 많이 발생 하는 오류로 여러 유형에서 발생을 하여 코드는 Null처리에 대한 방법을 제시 한다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/NullProcess.java
10. 5. 유연한 추상 타입
구체 타입의 코드 보다는 추상 타입의 코드가 객체의 사용에 유연성을 제공 한다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/AbstractTypeApproach.java
추상 타입
구체 타입
11. 6. 변경 할 수 없는 값에 대해서는 Final
변경 하면 안되는 값에 대해서는 불변(Final)객체를 사용 하여 보호 한다. 가변 객체를 사용 하면 중간에 값이 변경 되어 원하는 값을 얻을 수 없
는 경우가 발생 할 수 있다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/UseFinal.java
서울 대전
거리 변경
12. 7. Null 객체 반환
메서드가 null을 반환 하면 코드에서 NullPointException 발생 할 수 있어서 매번 명시적으로 확인 하는 데 이것을 해결 하기 위한 방법
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/UseFinal.java
13. 8. Optional 사용
메서드가 null을 반환 하면 코드에서 NullPointException 발생 할 수 있어서 매번 명시적으로 확인 하는 데 이것을 해결 하기 위한 방법
.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/ComplicatedComtion.java
14. 9. Collection객체는 Stream사용
Collection처리는 함수형 프로그램 방식이 읽기 쉽다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/CollectionToStream.java
15. 10. 복잡한 조건은 메서드 참조
Collection를 처리 할 떄 복잡한 조건은 메소드 참조로 코드를 간결히 작성 한다.
소스 : https://github.com/hyomee/JAVABASIC/blob/main/src/com/hyomee/cleancode/ComplicatedComtion.java