본문 바로가기
반응형

Back19

클린코드는 왜 중요한가? 객체 지향 설계에서 어려운 점은 소스 코드 중 문제가 있는 부분을 찾는 것이고, 어떻게 리팩터링을 할 것인지는 그 다음 이슈이다.대신 코딩해주는 AI들이 떠오르는 화두이지만 그렇다고 하더라도 코드는 항상 존재할 수밖에 없다. 그러므로 개발자는 클린 코드에 항상 관심을 가져야 한다. 클린 코드를 고려하지 않고 개발하면 당장은 빠르게, 생산성 높게 개발할 수 있겠지만 시간이 지날수록 생산성이 떨어지기 마련이다.결국엔 갈수록 치우기 어려운 거대한 똥을 쌓아나가는 셈이다.실무자는 현저하게 떨어진 생산성에 고통받아 재설계를 고려하며 제안하게 되고 관리자는 악화되는 상황에 어쩔 수 없이 뒤늦게 재설계를 허락한다. 클린 코드는 운동과도 같다. 하루 이틀 연습하여 구현한다고 한들 소용없다. 지속적으로 훈련하며 적용시켜.. 2023. 2. 20.
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests 회사에서 Spring 프로젝트 템플릿을 받아보았는데 고칠게 많아 보인다.. 우선 테스트 코드를 작성하고 있지 않은 것 같아서 1도 모르긴 하지만 내가 공부해서 도입해보려고 한다. Spring 프로젝트 템플릿에 테스트 코드를 시도하는 중에 다음과 같은 에러 문구가 발생했다. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests .... 찾아보니 Junit의 의존성 관련 문제인 거 같아서 maven에 일단 Junit 관련된 의존성이 뭐뭐 있나 들여다보고 이것저것 건들건들했다. 확인해보니 Junit 관련된 건 아래 하나밖에 없었다. org.springframework.boot sp.. 2022. 12. 20.
빌더 패턴 (Builder Pattern) 정의 GoF 디자인 패턴 중 생성 패턴에 해당한다고 한다. 기존에 자바에서 객체를 생성하는 방법은 new 클래스로 인스턴스를 생성하고 참조 변수에 담아줬고, 이 과정에서 생성자가 필요로 하는 파라미터들을 담아서 생성했다. - 생성자에 파라미터를 넣는 방법 User user = new User("chris", 31, 123, 456); 이 방식의 단점은 1. 해당 객체의 필드가 많으면 그만큼 객체 생성의 경우에 수에 맞게 생성자를 전부 만들어줘야 한다. 2. 123, 456이 대체 뭔 값인지 저것만 보고는 알 수가 없다. = 파라미터의 의미를 분간할 수 없다. = 가독성이 떨어진다. - Setter User user = new User(); user.setName("chris"); user.setAge(31);.. 2022. 12. 17.
HTTP & Servlet & Servlet Container 설명에 필요한 몇 가지 용어들 먼저 알아보면, w3 : www, World Wide Web, 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적 정보 공간Protocol : 컴퓨터 내부, 컴퓨터 사이에서 데이터 교환 방식을 정의하는 규칙 체계, 규칙의 집합, 규약HTTP는 전 세계적 정보 공간에서 정보를 주고받을 수 있는 데이터 교환에 대한 규약이다.HTTP는 클라이언트와 서버 사이에서 이루어지는 요청(request)과 응답(response) 규약이다. 조금 더 풀어보면 인터넷 브라우저가 HTTP를 통해 서버에 웹페이지(HTML)나 데이터(그림이나, 글 같은)를 요청하게 되면, 서버는 이 요청에 응답하여 클라이언트(유저)에게 요청받은 데이터를 응답해준다. 이 데이터를 모니터(출력장치.. 2022. 11. 7.
DB JOIN 모음 (INNER, LEFT, RIGHT, OUTER) JOIN(조인)이란? 테이블이 둘 이상 있을 때 두 테이블을 연결해서 데이터를 조회하는 방법이다. 두 테이블을 연결하기 위해선 테이블들이 당연히 한 개 이상의 칼럼을 공유하고 있는 상태여야 한다. 이 공유는 기본키(PK), 외래키(FK)로 설정되어 있는 경우겠다. JOIN의 종류 - INNER JOIN : 교집합 A∩B - LEFT&RIGHT JOIN : 부분집합 - OUTER JOIN : 외부조인, 합집합 ㄴ 오라클의 경우 OUTER JOIN이 있지만, MYSQL에는 없기 때문에 LEFT JOIN과 RIGHT조인을 합쳐서 쓴다고 한다. - INNER JOIN (A∩B) SELECT A.ID, A.NAME, A.PHONENUM FROM A INNER JOIN B ON A.ID = B.ID; - LEFT .. 2022. 11. 4.
DB 정규화(Normalization) & 비정규화(De-normalization) 정규화(Normalization)란? - 관계형 데이터베이스의 설계에서 중복을 최소화할 수 있도록 데이터를 구조화하는 과정을 정규화라고 한다. - 정규화는 DB의 논리적 설계 단계에서 수행한다. 정규화의 목적 - 데이터베이스 정규화의 목표는 이상현상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. - DB 구조 확장 시(데이터 삽입 시) 재구성을 최소화하기 위해서이다. - 효과적인 검색 알고리즘을 기대할 수 있다. 이상현상의 종류 이상현상의 개념 - 정규화를 거치지 않은 DB 데이터들이 불필요하게 중복됨으로써 릴레이션 관리 시 발생하게 되는 이슈이다. - 각 속성들 간에 존재하는 여러 가지의 종속 관계를 하나의 릴레이션에 표현하기에 이상현상이 발생하는 것이다. - 삭제 이상 (Del.. 2022. 11. 4.