개인 공부
-
읽기 좋은 코드 작성[4] 상속과 조합개인 공부/읽기 좋은 코드 2024. 9. 7. 10:02
🔴 객체 지향🟠 상속 보다는 조합을 사용하자상속은 시멘트처럼 굳어지는 구조다. 수정이 어렵다.상속은 부모와 자식의 결합도가 높다. 조합과 인터페이스를 활용해서 유연한 구조로 짜자🟢 상속으로 해결포켓몬이 타입에 따라 공격하는 부분을 리팩토링 해보려고 한다.먼저 상속을 받은 경우를 해보자.public class Battle { private ConsolePrint consolePrint; public Battle(ConsolePrint consolePrint) { this.consolePrint = consolePrint; } public int attack(PocketMon pocketMon) { int damage = 0; damage = ..
-
읽기 좋은 코드 작성하기 [3] SOLID 원칙개인 공부/읽기 좋은 코드 2024. 9. 1. 16:35
출처 인프런 Readable Codegit 소스 깃 소스 참고🔴 SOLID 란SRP Single Responsibility PrincipleOCP Open-Closed PrincipleLSP Liskov Substitution PrincipleISP Interface Segregation PrincipleDIP Dependency Inversion Principle다음 의미를 가지고 있다. 코드에 SOLID 원칙이 적용되는 예시를 하나씩 적어보려 한다.🟠 SRP(Single Responsibility Principle)단일 책임 원칙으로 하나의 class는 하나의 책임을 가진다는 것이다.🟢 예시public class Main { public static void main(String[] arg..
-
개발자로써 소통하기(w. 유스케이스, 흐름도, erd)개인 공부 2024. 8. 5. 20:20
🔴 개발자와 소통?개발자로써 다른 개발자들과 소통하는 것은 중요한 일이다.나는 개발 기술만 공부했지 이전에 문서를 작성하고 소통하는 방법에 대해 놓치고 있었던 것 같다.간단한 게시판 프로젝트를 만든다는 가정하에유스케이스 다이어그램시퀀스 다이어그램 (sequence diagram)순서도erd순서로 작성해보려고 한다.🟠 유스케이스 다이어그램유스케이스 다이어그램 작성에 대해 설명을 간단히 설명 해보자!🟢 액터졸라맨 사람은 액터로 시스템 외부를 의미한다. 게시판 시스템의 경우 사용자라는 큰 외부 접근자가 있으며 사용자 안에는 인증 회원이 포함된다.사용자는 회원가입에 접근이 가능하고 인증회원은 사용자가 사용하는 회원가입 이외에 로그인, 게시글 조회, 게시글 작성등을 사용할 수 있다.🟢 유스케이스시스템에서 ..
-
Spring Stop Watch 로직 속도 체크개인 공부/spring 2024. 8. 5. 20:18
🔴 StopWatchspring에서 자체적으로 제공해주는 StopWatch 라이브러리로 간편하게 로직의 성능을 체크해볼 수 있다.🟠 사용법🟢 객체 만들기import org.springframework.util.StopWatch;StopWatch stopWatch = new StopWatch();stopWatch.start();stopWatch.stop();위와 같이 객체로써 받아오면 끝이다.그리고 start와 stop으로 시간을 체크할 수 있다.🟢 시간 체크하기stopWatch.start("Task1");stopWatch.stop();stopWatch.start("Task2");stopWatch.stop();stopWatch.start("Task3");stopWatch.stop();log.info..
-
Java에서 테스트 코드란? (작성 예시 포함, 깃허브 소스 첨부)개인 공부/java 2024. 8. 5. 20:11
🔴 테스트란?🟠 테스트의 종류🟢 단위 테스트 (Unit Testing)단위 테스트는 소프트웨어의 개별적인 부분, 즉 "단위"를 격리된 환경에서 테스트하는 것입니다.주로 클래스, 메서드, 함수와 같은 작은 코드 조각을 대상으로 합니다.목적은 개별 단위가 예상대로 동작하는지 검증하고 코드의 신뢰성을 확보하는 것입니다.🟢 통합 테스트 (Integration Testing)통합 테스트는 여러 개의 단위나 컴포넌트를 함께 테스트하여 이들이 올바르게 상호 작용하는지를 확인하는 것입니다.각 단위 테스트가 개별적으로 잘 작동한다고 해도, 통합할 때 발생할 수 있는 문제를 찾아내기 위해 필요합니다.데이터베이스 연동, 외부 API 호출 등과 같은 상호 작용을 테스트하는 데 사용됩니다.🟢 인수 테스트 (Accept..
-
읽기 좋은 코드 작성하기 [2] 논리 사고 흐름개인 공부/읽기 좋은 코드 2024. 8. 5. 20:08
출처 인프런 Readable Code🔴 논리 사고 흐름인간의 뇌는 한번에 한가지만 처리할 수 있다. 멀티 태스킹을 잘한다는 것은 여러 업무를 번갈아 가면서 처리할때 빠르게 다른 업무를 처리할 준비를 할 수 있는 능력이 좋다는 것을 의미한다.이 말은 즉 우리의 뇌는 업무를 처리할때 업무 처리를 위한 준비 -> 업무 처리 -> 다른 업무 인지 -> 업무 처리를 위한 준비 형태로 진행된다는 것이다.이를 코드를 작성할때도 고려해볼만 하다.🟠 Early Retrun코드를 작성할때 빠른 리턴은 코드를 더 읽기 쉽게 해준다.public class Scribbling2 { @Test void earlyReturn() { int count = 3; if (count 다음 코드를 실..
-
읽기 좋은 코드 작성하기 [1] 추상개인 공부/읽기 좋은 코드 2024. 8. 5. 20:07
출처 인프런 Readable Code🔴 추상🟠 추상🟢 추상이란?추상의 사전적 의미는 사물을 정확하기 이해하기 위해 사물의 특정한 측면만을 가려내어 포착하고 다른 측면들은 버린다는 것이다.🟢 추상과 구체구체는 구체적으로 구현된 물체이고 추상은 반대로 구체적인 부분에서 특정한 측면만을 가지고 있는 것이다.예를 들어나는 어제 다른 업체의 API를 호출하여 우리 DB에 데이터를 밀어넣고 해당 데이터들을 다시 우리 데이터에 맞게 API에서 반환할 수 있는 작업을 진행해보았어.라는 말은 구체적으로 내가 어떤 일을 했는지 설명하고 있다. 이 말을 추상적으로 표현한다면나는 어제 ERP 연동을 했어.라고 표현할 수 있다.추상이란 추상 메서드, 추상 클래스와 같이 어려운 단어로 보기보다. 우리 인간이 어떠한 구체적..
-
동시성 제어 [3] Redis개인 공부/spring 2024. 8. 5. 19:54
🔴 분산 Lock동시성 제어 [1] java 처리동시성 제어 [2] DB Lock에 이어 Redis를 사용한 동시성 제어 방법을 학습해보자.분산된 서비스에서 사용할 수 있는 락 방법으로 DB를 사용하는 방법에 대해 알아봤었다. 하지만 DB의 경우 이미 insert와 select 등 다양한 처리를 진행하고 있기에 lock을 걸었을때 성능의 이슈와 DB 자체가 빠른 시스템이 아니라 처리 속도면에서도 좋은 결과를 보여주진 않는다.그래서 우리가 선택할 수 있는 동시성 제어 방법으로 in-memory의 캐시를 사용하는 Redis를 통해 Lock을 처리할 수 있다.🟠 Redis(lettuce) 설정Redis를 사용하기 위해서는 Redis 서버를 생성해야되기 때문에 설정부터 시작해보자.🟢 docker compo..