본문 바로가기

분류 전체보기

(58)
Java Checked vs Unchecked Exception: 예외 처리의 원칙과 트랜잭션 롤백 Checked Exception과 Unchecked Exception에 대한 이해Java에서 예외 처리(Exception Handling)는 매우 중요한 요소입니다.저는 아키텍처 설계에서 가장 중요하다고 생각되는게 Exception 처리라고 생각합니다. 예외는 프로그램 실행 중에 발생할 수 있는 비정상적인 상황을 나타내며, 이 예외를 적절히 처리하지 않으면 프로그램이 예기치 않게 종료될 수 있습니다.Java에서는 예외를 두 가지 유형으로 나눌 수 있는데, 바로 Checked Exception과 Unchecked Exception입니다. 이번 글에서는 두 가지 예외의 차이점과 사용 사례, 그리고 언제 어떤 예외를 사용하는 것이 적절한지에 대해 알아보겠습니다. Checked Exception이란Checked..
의존성 역전 원칙(DIP): 유연하고 확장 가능한 코드 설계의 핵심 의존성 역전의 원칙(Dependency Inversion Principle, DIP)은 객체지향 설계의 5대 원칙 중 하나로, 상위 수준 모듈이 하위 수준 모듈에 의존하지 않도록 하여 시스템의 결합도를 줄이고 유연성을 높이는 데 중점을 둡니다. 이 원칙은 애플리케이션이 변화에 쉽게 대응할 수 있도록 구조적으로 설계하는 데 중요한 역할을 합니다. 의존성 역전의 원칙(DIP)의 핵심 개념 DIP는 두 가지 주요 원칙으로 설명됩니다. 1. 상위 수준 모듈은 하위 수준 모듈에 의존해서는 안 된다.상위 수준 모듈은 애플리케이션의 비즈니스 로직을 담당하고, 하위 수준 모듈은 데이터베이스나 네트워크와 같은 구체적인 기능을 처리합니다. 상위 모듈이 하위 모듈에 직접 의존하면, 하위 모듈이 변경될 때 상위 모듈도 영향을..
Java 불변 객체(Immutable Object) 와 장단점 불변 객체(Immutable Object)는 한 번 생성되면 그 상태가 변하지 않는 객체를 의미합니다. 자바에서 가장 흔히 사용되는 불변 객체의 예로는 String 클래스가 있습니다. 이 글에서는 String 클래스를 통해 불변 객체의 개념을 살펴보고, 불변성의 장점과 단점에 대해 논의해 보겠습니다. String 클래스: 불변 객체의 대표적인 예 String 클래스의 인스턴스는 불변 객체입니다. 즉, 한 번 생성된 String 객체의 내부 상태(저장된 문자열)는 변경할 수 없습니다. 예제를 통해 이를 확인해 보겠습니다.String text = "abc";text = text + "def";System.out.println(text); // 출력 결과: "abcdef"  이 코드에서 text 변수는 처음에..
좋은 코드를 위한 5가지 핵심 원칙: SOLID부터 리팩토링까지 좋은 코드를 작성하는 방법에 대해 많은 이론과 원칙이 있지만, 저는 특히 다음 5가지가 중요하다고 생각합니다. 1. SOLIDSOLID 원칙은 효과적인 소프트웨어 설계의 핵심입니다. 이 중에서도 '단일 책임 원칙(Single Responsibility Principle, SRP)'은 특히 중요합니다. SRP는 하나의 클래스가 단 하나의 책임을 가져야 한다고 말합니다.  이 원칙을 지키면 클래스 간의 복잡도가 줄어들고, 코드의 가독성과 유지보수성이 향상됩니다. 단일 책임 원칙을 통해 각 클래스의 목적이 명확해지며, 이는 전체 시스템의 이해와 확장성에 긍정적인 영향을 미칩니다. 2. 읽기 쉬운 코드좋은 코드인지 확인하는 방법은 아주 간단합니다.좋은 코드의 핵심 요소 중 하나는 바로 '읽기 쉬움'입니다. 다른..
TDD로 코드 품질과 효율성 높이는 방법: 장단점과 실전 활용 테스트 주도 개발 (TDD)은 개발 이전에 테스트 코드를 먼저 작성하고, 테스트 코드에 따라 기능을 개발하는 방법론입니다. TDD의 장점개발 과정에서 미리 버그를 찾을 수 있습니다.코드의 안정성이 높아진 덕분에 복잡한 리팩토링을 시도할 수 있습니다.테스트 코드가 행위 중심으로 코드를 작성하게 유도하여, 더 높은 수준의 개발이 가능합니다.기능의 확장 및 수정에도 코드의 품질을 유지할 수 있어, 지속적인 통합/ 지속적인 배포 에 적합합니다. TDD "레드-그린-리팩터" 사이클TDD개발은 레드, 그린, 리팩터 순서를 따릅니다.레드 : 새로 개발할 기능에 대하여 테스트 코드를 작성한 단계입니다. 이 때, 테스트 코드는 실패해야 합니다.그린 : 테스트 코드를 통과할 수 있도록 최소한의 코드를 작성한 단계입니다. ..
쉽게 이해하는 SOLID 원칙: 유지보수성을 높이는 객체지향 설계 방법 개발 과정에서 복잡한 코드와 구조에 직면했을 때, SOLID 원칙은 강력한 지침이 됩니다.처음 들어본다면 다소 어려울 수 있지만, 이 원칙들은 깔끔하고 유지보수가 쉬운 코드를 작성하는 데 필수적입니다. Single Responsibility Principle 단일 책임 원칙단일 책임 원칙이라는 단어도 왠지 맘에 안듭니다.하나의 객체는 하나의 역할만 해야한다는 내용입니다.예를 들어, "요리사" 객체는 요리만 담당해야 하며, 웨이터의 역할인 "서빙"을 해서는 안 됩니다.객체가 여러 역할을 수행하면 단일 책임 원칙을 위반하게 됩니다. Open-Closed Principle 개방-폐쇄 원칙이름이 더 이해하기 어렵게 만드는 것 같습니다.새로운 기능을 추가할 때 기존 코드가 변경되면 안된다는 내용입니다.예를들어 쇼..
MySQL 8에서 인덱스 성능 극대화: 알고리즘과 실전 사례 MySQL 8 버전에서 사용되는 Index(인덱스) 기능에 대해 자세히 알아보겠습니다. 이 내용은 MySQL 8 버전을 기준으로 하며, InnoDB 스토리지 엔진을 주로 다룰 것입니다.  1. InnoDB의 Index 알고리즘은 B-Tree 알고리즘을 사용한다.InnoDB 스토리지 엔진에서는 기본적으로 B-Tree 알고리즘을 사용합니다. 이 알고리즘은 트리 형식으로 데이터를 정렬하며, 원하는 값을 찾을 때 상단부터 시작하여 작으면 왼쪽으로, 크면 오른쪽으로 이동하면서 탐색하는 방식입니다.  2. 인덱스 압축 기능을 비활성화 할 수 있다.InnoDB는 인덱스 페이지를 압축하여 디스크 공간을 절약하는 기능을 제공합니다. 그러나 이 기능은 CPU 리소스를 사용하기 때문에 추가, 변경, 삭제 작업이 많을 때 부..
데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법 프로시저와 함수 뷰의 차이점을 설명드리겠습니다. 1. 프로시저프로시저(Procedure)는 데이터베이스의 데이터에 대한 작업을 수행하기 위한 목적으로 사용됩니다. 이것은 데이터의 추가, 수정, 삭제, 검색 등과 같은 다양한 데이터 조작 작업을 수행하는 데 사용됩니다.비즈니스 룰 검증, 트랜잭션 관리, 보안 제어 등과 같은 데이터베이스 관리 작업에도 활용됩니다.프로시저는 무엇을 return하는 것 보다 데이터를 조작하기 위해 사용됩니다. 그런 이유로 리턴값이 없는 프로시저가 일반적입니다. 2. 함수함수(Function)는 주로 값을 계산하거나 가공하기 위해 사용됩니다.함수는 return 값으로 단일 값(숫자 또는 문자열)을 제공하는 것이 일반적입니다.함수는 입력 값을 받아서 계산하고, 그 결과 값을 반환합..