본문 바로가기

분류 전체보기370

[OOP] 올바른 DTO 객체를 만들어 보자/+github DTO Data Transfer Objects는 소프트웨어 개발에서 흔한 디자인 패턴이다. dto는 레이어 사이, 혹은 시스템 사이 데어터를 전달할 때 사용된다. 이를테면 Spring의 경우 컨트롤러에서 서비스 레이어로 값을 전달할 때 dto를 사용할 수 있다. 스프링의 레이어 프레젠테이션 계층 클라이언트의 요청 및 응답을 처리한다 @Controller 어노테이션이 사용된 클래스는 스프링 MVC에서 웹 요청을 처리하는 역할을 하게 된다. 비즈니스 계층 어플리케이션의 핵심 비즈니스가 위치하는 곳이다. 트랜잭션, 보안, 데이터 처리 등 주요 비즈니스 로직이 포함된다. 데이터 액세스 계층 데이터베이스와의 상호작용을 담당한다. JDBC나 ORM 기술을 사용하여 DB와 통신한다. DTO DTO를 사용하는 이유? .. 2023. 11. 24.
[OOP] 객체 지향 설계를 잘하는 방법 객체 지향 설계 객체 지향 설계란? 객체 지향 설계(Object-Oriented Design, OOD)는 소프트웨어를 개발할 때 객체 지향 프로그래밍 (OOP) 원칙을 기반으로 하는 설계 접근 방식이다. 이러한 설계는 소프트웨어 시스템을 여러 객체로 나누고, 각 객체가 협력하여 기능을 수행하도록 하는 것을 중요시한다. 이를 위해서는 객체를 큰 관계 속에서 파악하는 것이 필요하다. 객체 지향의 목적은 유지 보수가 가능한 좋은 코드를 작성하는 데에 있다. 객체란? 객체는 현실 세계의 객체의 은유이다. 즉 현실 속 객체처럼 말하고 달리고 밥을 먹는다. 현실의 객체와의 차이점은 객체 지향 세계의 객체들은 모두 능동적이라는 것이다. 현실에서는 펀치를 치면 사람에 의해 샌드백이 터진다. 그러나 객체 지향 세계의 샌.. 2023. 11. 22.
[Refactoring] 코드를 리팩토링하자!/전략 패턴 적용 코드 리팩토링 KDT 팀단위 프로젝트가 끝나고 약간의 시간이 흘렀다. 프로젝트 중에도 스스로 코드를 너무 더럽게 짰다는 후회가 항상 존재했으나 시간에 쫓기는 일정 때문에(변명이겠지만) 기능만 하는 코드를 대충 작성하고 넘어간 바 있다. 이는 팀원들도 마찬가지였다. 이로 인해 서로의 코드를 리뷰하는 것은 거의 불가능에 가까웠고 이미 구현되어있는 메서드를 팀원이 가져다 쓰는 것에도 위험이 따랐다. 해당 코드의 동작이 한 눈에 들어오지 않으며, 코드가 제대로 작성되었는지, 에러는 없는지 의문이 있기 때문이다. 테스트 코드 안전하지 않은 코드에 대한 문제를 항상 상기하고 있었기 때문에, 드디어 코드를 리팩토링하는 시간을 가지고자 한다. 우선 리팩토링 하기 전 내가 짠 코드의 동작이 일정한 결과를 낳게 하기 위한.. 2023. 11. 16.
[JAVA] 스트림을 사용해보자 자바 스트림을 사용하자! 자바 스트림(Stream)은 자바 8부터 도입된 기능으로, 컬렉션을 함수형 프로그래밍 스타일로 처리할 수 있는 강력한 기능을 지원한다. 스트림은 데이터의 흐름이다. 배열, 컬렉션 등에 여러가지 함수를 적용, 조합하여 원하는 결과를 얻을 수 있게 된다. 스트림의 특징 스트림은 데이터 소스를 변경하지 않는다. 스트림은 데이터 소스로부터 데이터를 읽기만 할 뿐, 데이터 소스를 변경하지 않는다. 스트림은 일회용이다. 스트림은 한번 사용하면 닫혀서 재사용이 불가능하다. 지연 처리(Lazy invocation)_ 스트림의 최종 결과는 최종작업(최종 연산)이 이루어 질 때 계산된다. 즉, 예를 들어 스트림 내부에서 외부의 데이터를 변경했을 경우, 해당 변경하는 함수는 스트림의 최종작업이 이뤄.. 2023. 11. 9.