반응형

분류 전체보기 299

리팩토링 개정판 _ Chapter 03 코드에서 나는 악취 : 세번째

1. 기이한 이름 - 개발은 추리소설이 아니기 때문에 이상한 변수명 보다는 명료하게 작성해야한다 - 이름 짓기는 프로그래밍에서도 가장 어렵기로 손꼽힌다. 2. 중복 코드 3. 긴 함수 - 잘 활용되는 프로그램은 짧은 함수로 구성된 것이 많다. - 코드를 이해하고, 공유하고, 선택하기 쉬운 것은 짧은 함수로부터 시작이 된다. - 짧은 함수를 쉽게 이해하기 위해서는 함수명을 잘 지어야함 - 함수의 이름에서는 동작 방식이 아닌, 의도가 드러나야함 4. 긴 매개변수 목록 - 매개변수가 길어 질수록 매개변수를 질의 함수로 바꾸기를 생각 해봐야한다. - 객체 통째로 넘기기 또한 방법이 될 수 있다. 5. 전역 데이터 - 전역 데이터는 우리각 겪을 수 있는 악..

ETC 2025.09.16

리팩토링 개정판 _ Chapter 02 리팩터링 원칙 : 두번째

1. 리팩터링 정의 소프트웨어의 겉보기 동작은 그대로 유지, 여러가지 리팩터링 기법을 적용해서 재구성 리팩터링을 하다가 코드를 깨져서 고생한다 => 이것은 리팩터링이 아님! 코드의 구조를 바꾸는 것은 재구성이고, 리팩터링은 잘게잘게 이것을 하는 것임 2. 두 개의 모자 만약 우리가 무언가 작업을 할 때 / 기능 개발 모자와 리팩터링 모자를 두 개를 가지고 진행하고 기능 개발 모자일 때는 오로지 기능 개발에 몰두하고, 이후 리팩터링 모자를 쓰면 오직 코드 재구성에만 전념함 3. 리팩터링하는 이유 코드를 건강한 상태로 유지하는 데 도와주는 약! 리팩터링을 하면 소프트웨어를 이해하기 쉬워진다! 버그를 쉽게 찾을 수가 있다! 프로그래밍 속도를 높여준다!..

ETC 2025.09.16

리팩토링 개정판 _ Chapter 01 리팩터링 : 첫번째

1. 리팩터링 1장 1 . 자. 시작해보자! Json 으로 필요한 값을 정의하여 들고있고 청구서를 출력하는 걸 function statement 로 필요한 값을 출력하는 함수를 보여줌 2. 예시 프로그램을 본 소감 코드 자체는 나쁘지 않게 쓰였졌음 단, 확장성에는 어려움을 가지고 있을 수 있음 3. 리팩터링의 첫 단계 리팩터링은 이미 구현된 기능을 다시 조립하는 경우가 많기 때문에 테스트의 역할이 중요하다는 걸 강조함 4. statement() 함수 쪼개기 Switch 문을 함수로 쪼개는 걸 먼저 설명해줌 -> 앞으로 이걸 함수쪼개기 라고 한다고 정의함. 그리고 무언가 변경점이 있으면 바로 바로 테..

@Controller 에서 @RequestMapping 어노테이션 안 타던 이슈

👌이슈 내용로그인 시 -> 로그인을 해야한다는 팝업을 만들기 위해서 AlertController 생성 후 @RequestMapping("/front/show") 이런식으로 어노테이션 추가함 👍원인서블릿 맵핑에서 들어오는 조건이 걸려있어서 JSP 를 통해서 Controller 호출이 안되었음 action org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml 1 action *.do action *.ajax - 이런 식으로 URL 패턴이 *.do 로 되어있어서 정상적으로 M..

생성 패턴 _ 프로토타입 패턴

🧬 프로토타입 패턴 (Prototype Pattern)1. 패턴 개요프로토타입 패턴은 객체를 new 키워드로 새로 생성하지 않고, 기존 객체를 복제(clone)하여 새 객체를 생성하는 생성 패턴입니다.📌 목적: 객체 생성 비용을 줄이고, 런타임 중에 유연하게 객체를 복사해서 사용하기 위함2. 언제 사용하나요?new를 통한 객체 생성 비용이 큰 경우비슷한 객체를 여러 개 생성해야 할 때런타임 동적 구성 기반 객체 생성을 원할 때생성자 대신 유연한 복제 로직이 필요할 때3. 장단점 비교장점 👍단점 👎객체 생성 비용 절감깊은 복사 vs 얕은 복사 문제 발생new 없이 동적으로 객체 생성clone 메서드 구현 필요기존 객체 상태 유지 가능객체 구성 따라 복잡도 증가복잡한 생성자 제거 가능모든 클래스가 C..

생성 패턴 _ 빌더 패턴

🧱 빌더 패턴 (Builder Pattern)1. 패턴 개요Builder 패턴은 복잡한 객체의 생성 과정을 분리하여, 같은 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 해주는 생성 패턴입니다.📌 목적: 생성자가 너무 많거나 복잡할 때, 생성 절차를 메서드 체이닝 방식으로 분리하여 가독성과 안정성을 확보2. 언제 사용하나요?파라미터가 많은 생성자 대신 가독성 있는 객체 생성을 원할 때필수/옵션 필드를 구분하고 싶을 때생성 순서를 조절하거나, 다양한 설정 조합이 필요한 객체일 때불변 객체를 만들고 싶을 때3. 장단점 비교장점 👍단점 👎필드가 많을 때 가독성이 높아짐클래스 수가 증가할 수 있음객체 생성 절차를 캡슐화복잡도 증가 가능불변 객체 생성 가능단순한 객체에는 과할 수 있음메서드 체이닝으로..

생성 패턴 _ 추상 팩토리 패턴

🏭 추상 팩토리 패턴(Abstract Factory Pattern)1. 패턴 개요추상 팩토리 패턴(Abstract Factory Pattern)은 관련된 객체들의 집합(제품군)을 생성하는 인터페이스를 제공합니다.구체적인 클래스를 지정하지 않고도 서로 연관된 객체들을 일관성 있게 생성할 수 있습니다.📌 한 문장 요약:"구체적인 클래스에 의존하지 않고, 관련 있는 객체들을 일관되게 생성할 수 있게 해주는 패턴"2. 언제 사용하나요?서로 관련 있는 객체들(제품군)을 함께 생성해야 할 때객체 간의 호환성을 보장해야 할 때구체 클래스에 의존하지 않고 추상적으로 객체를 생성하고 싶을 때팩토리 메서드가 여러 개 필요할 때예시: 윈도우용 버튼/체크박스와 맥용 버튼/체크박스는 동시에 만들어야 하는 제품군입니다.3...

생성 패턴_팩토리 메서드 패턴

1. 🏭 팩토리 메서드 패턴이란?Factory Method Pattern은 객체 생성 코드를 별도의 팩토리 메서드로 분리하여, 상위 클래스에서는 객체 생성 방식만 정의하고, 실제 생성은 하위 클래스에서 담당하게 하는 패턴입니다.즉, 객체 생성에 대한 책임을 서브클래스에게 위임합니다.핵심 목적: 객체 생성 코드와 객체 사용 코드를 분리 2. 🔧 언제 사용하나?다음과 같은 경우에 유용합니다:객체 생성 로직이 복잡하거나 다양한 형태의 객체를 생성해야 할 때코드의 유연성(확장성) 을 높이고 싶을 때인터페이스/추상 클래스만 알고 구체 클래스를 몰라도 되는 구조가 필요할 때기존 코드를 변경하지 않고 새로운 객체를 쉽게 추가하고 싶을 때예: 로그 기록 방식이 ConsoleLogger → FileLogger → D..

CDN(Content Delivery Network)

CDN (Content Delivery Network) – 빠르고 안정적인 콘텐츠 전달의 핵심CDN은 사용자의 위치와 가까운 서버를 통해 정적 콘텐츠(이미지, 영상, CSS 등)를 빠르게 전달함으로써 웹 성능을 극대화하는 핵심 기술입니다.🌍 CDN 개념CDN (Content Delivery Network)은전 세계에 분산된 Edge 서버를 통해 콘텐츠를 캐싱하고, 사용자의 요청을 가장 가까운 서버가 처리하도록 하여 지연 시간을 최소화합니다.📌 주요 특징기능설명🔁 캐싱정적 콘텐츠(이미지, JS, CSS 등)를 Edge 서버에 저장 후 재사용🌐 지리적 분산다양한 지역에 Edge 서버를 두어 사용자 근접성 향상🚀 성능 향상요청 응답 속도 개선, 로딩 시간 단축📶 트래픽 분산트래픽을 여러 서버에 분산..

Monolith, MSA(Microservice) 아키텍쳐

모놀리식 아키텍처 vs 마이크로서비스 아키텍처 (MSA) 비교 정리서비스 아키텍처는 애플리케이션의 구조와 유지보수, 확장성에 큰 영향을 미칩니다.이번 글에서는 대표적인 두 가지 아키텍처인 모놀리식 아키텍처(Monolithic Architecture)와 마이크로서비스 아키텍처(Microservice Architecture, MSA)를 비교 정리해보겠습니다.🧱 모놀리식 아키텍처 (Monolithic Architecture)📌 정의이름 그대로, 모든 기능이 하나의 통합된 코드베이스에 포함된 구조입니다.모든 컴포넌트가 단일 프로세스 내에서 실행됩니다.✔️ 특징단일 배포코드베이스가 일관됨초기 개발 구조가 간단함✅ 장점초기 설정 및 배포가 간편함성능 오버헤드가 적음 (단일 프로세스)디버깅 및 로깅이 상대적으로 ..

반응형