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

More Related Content

What's hot

Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
Eunjoo Im
 
Swift3 typecasting nested_type
Swift3 typecasting nested_typeSwift3 typecasting nested_type
Swift3 typecasting nested_type
Eunjoo Im
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
Eunjoo Im
 
Python
PythonPython
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
ETRIBE_STG
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
Jinkyoung Kim
 
Windows reversing study_basic_2
Windows reversing study_basic_2Windows reversing study_basic_2
Windows reversing study_basic_2
Jinkyoung Kim
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
Hyosang Hong
 
Realm.io for iOS
Realm.io for iOSRealm.io for iOS
Realm.io for iOS
Eunjoo Im
 
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
Yongha Yoo
 
Pwnable study basic_3
Pwnable study basic_3Pwnable study basic_3
Pwnable study basic_3
Jinkyoung Kim
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
TonyCms
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Young-Beom Rhee
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function
Young-Beom Rhee
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
Changwon National University
 
Effective cpp
Effective cppEffective cpp
Effective cpp
TonyCms
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수유진 변
 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operator
Young-Beom Rhee
 
1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초
Circulus
 
Java class
Java classJava class
Java class
Hyosang Hong
 

What's hot (20)

Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
Swift3 typecasting nested_type
Swift3 typecasting nested_typeSwift3 typecasting nested_type
Swift3 typecasting nested_type
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
 
Python
PythonPython
Python
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
Windows reversing study_basic_2
Windows reversing study_basic_2Windows reversing study_basic_2
Windows reversing study_basic_2
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
 
Realm.io for iOS
Realm.io for iOSRealm.io for iOS
Realm.io for iOS
 
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
스위프트, 코틀린과 모던언어의 특징 (Swift, Kotlin and Modern Languages)
 
Pwnable study basic_3
Pwnable study basic_3Pwnable study basic_3
Pwnable study basic_3
 
Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식Cpp에서 활용해보는 Lambda식
Cpp에서 활용해보는 Lambda식
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operator
 
1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초
 
Java class
Java classJava class
Java class
 

Similar to Java 이해하기 쉬운 코드

깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
Jay Park
 
The art of readable code ch4 ch8
The art of readable code ch4   ch8The art of readable code ch4   ch8
The art of readable code ch4 ch8
Ki Sung Bae
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
wonmin lee
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
NAVER Engineering
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
Sungchul Park
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
대영 노
 
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램해강
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
Yong Joon Moon
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
iamprogrammerofficial
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
Bingu Shim
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Daum DNA
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
Ryan Park
 
C Language II
C Language IIC Language II
C Language IISuho Kwon
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
세빈 정
 
Node.js intro
Node.js introNode.js intro
Node.js intro
Chul Ju Hong
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
준혁 이
 

Similar to Java 이해하기 쉬운 코드 (20)

깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
The art of readable code ch4 ch8
The art of readable code ch4   ch8The art of readable code ch4   ch8
The art of readable code ch4 ch8
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
 
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
 
MEC++ 3,4
MEC++ 3,4MEC++ 3,4
MEC++ 3,4
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
C Language II
C Language IIC Language II
C Language II
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
 
Node.js intro
Node.js introNode.js intro
Node.js intro
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 

More from Hong Hyo Sang

Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
Hong Hyo Sang
 
Java_09 이너클래스
Java_09 이너클래스Java_09 이너클래스
Java_09 이너클래스
Hong Hyo Sang
 
Java_08 collection
Java_08 collectionJava_08 collection
Java_08 collection
Hong Hyo Sang
 
Java_07 제너릭 메서드
Java_07 제너릭 메서드Java_07 제너릭 메서드
Java_07 제너릭 메서드
Hong Hyo Sang
 
Java_03 연산자
Java_03 연산자Java_03 연산자
Java_03 연산자
Hong Hyo Sang
 
Java_06 상속
Java_06 상속Java_06 상속
Java_06 상속
Hong Hyo Sang
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
Hong Hyo Sang
 
Java_04 제어
Java_04 제어Java_04 제어
Java_04 제어
Hong Hyo Sang
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형
Hong Hyo Sang
 
Java_01 기초
Java_01 기초Java_01 기초
Java_01 기초
Hong Hyo Sang
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
 

More from Hong Hyo Sang (11)

Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
 
Java_09 이너클래스
Java_09 이너클래스Java_09 이너클래스
Java_09 이너클래스
 
Java_08 collection
Java_08 collectionJava_08 collection
Java_08 collection
 
Java_07 제너릭 메서드
Java_07 제너릭 메서드Java_07 제너릭 메서드
Java_07 제너릭 메서드
 
Java_03 연산자
Java_03 연산자Java_03 연산자
Java_03 연산자
 
Java_06 상속
Java_06 상속Java_06 상속
Java_06 상속
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Java_04 제어
Java_04 제어Java_04 제어
Java_04 제어
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형
 
Java_01 기초
Java_01 기초Java_01 기초
Java_01 기초
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
 

Java 이해하기 쉬운 코드

  • 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