SlideShare a Scribd company logo
1 of 16
Download to read offline
이해하기 쉬운 코드 개발
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

Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
ETRIBE_STG
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
유진 변
 

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 이해하기 쉬운 코드

『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
 
[아꿈사] 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++
KyeongWon Koo
 
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
 
C Language II
C Language IIC Language II
C Language II
Suho Kwon
 

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 (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) 개발 원칙
 

Recently uploaded

Recently uploaded (6)

코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 
TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 

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