전체 글
-
[Selenium] AutoCloseable이 없는 이유공부/etc 2023. 2. 19. 23:12
자바의 정석 예외처리 파트를 읽고 있는데, try-with-resources문을 사용하는 것이 좋아보였다. 실제로 이게 좋은 것인가?하고 찾아보니 이펙티브 자바에도 이런 내용이 있어서 개선할 코드가 있으면 직접 수정하는 것도 좋아보였다. 그래서 작년에 했던 산학프로젝트에 ChromeDriver를 try-with-resources로 적용해 PR을 보내려고 했는데, 빨간줄이 나와 내부 코드를 확인해보니 AutoCloseable 인터페이스를 상속하지 않은 상태였다. 기여를 해볼만하다는 생각이 들어서 셀레니움 깃허브에 들어갔는데, 이미 나와 같은 생각을 했던 사람들이 여러명 존재했다. 사실 별 기대조차 안했다. 내가 이걸 발견할 정도면 이미 다른 사람들이 발견했을테니... 이유 1. close() 이름 중복 내..
-
[Java] var는 사용해도 되는 것일까?백엔드/Java 2023. 2. 13. 00:05
자동차 경주 미션 2단계의 코드 예시에서는 var를 사용하고 있다. 자바에서 var를 보는 것은 처음이었고, 자바스크립트에서 var는 사용을 지양하라고 나와있어서 선입견 때문에 이걸 과연 사용해도 될까? 라는 생각이 들었다. 1. 자바스크립트에서 var 사용을 지양하는 이유 [호이스팅 현상] console.log(foo); undefined var foo = 1; console.log(foo); 1 자바스크립트는 변수를 설정하면 변수가 속하는 유효 범위(scope) 안에 최상단으로 올려져 선언을 하게 된다. 사실상 중간에 변수를 선언해도 최상단에 선언하는 것과 같은 효과라서 위와 같은 코드가 나와도 첫번째 줄의 console.log(foo);가 작동하게 된다. [중복 선언] var foo = 1; var..
-
[Java] final을 자주 사용하는 이유백엔드/Java 2023. 2. 12. 22:10
우테코를 진행하는데 코치님도 그렇고, 리뷰어님도 final을 자주 사용해서 왜 final을 많이 사용하는지 궁금해졌다. 내가 final을 사용하는 이유는 상수 아니면 멤버 변수에만 사용했는데, 메서드 인자에도 final을 최대한 붙이는 편이라고 해서 관련된 내용을 찾아보았다. 1. final 키워드 자바에서 final 키워드는 변수, 메서드, 클래스에 적용할 수 있다. 변수 - 단 한 번만 초기화가 가능하다. - 원시 타입에 final을 붙이면 값을 변경할 수 없다. - 객체 타입에 final을 붙이면 다른 객체로 변경하지 못하는 것이지, 객체 내부 데이터는 변경할 수 있다. - 메서드 인자에 final을 붙이면 원시 타입, 객체 타입에 따라 각각의 규칙이 적용된다. 메서드 - 상속 받은 클래스의 어떤 ..
-
[우아한테크코스 5기] 1주차 후기백엔드/우아한테크코스 5기 2023. 2. 12. 15:11
기간: 2023/02/07 (화) ~ 2023/02/12 (일) 온보딩 기간으로 크게 수업, 연극 준비, 페어프로그래밍을 하게 된다. 온보딩으로 연극을 하는데 1일차부터 추노하고 싶었다.. ㅋㅋ 1. 연극 연극의 경우엔 주제 선정부터 뭘해야할지 고민했는데, 크루들이 다들 좋은 주제를 말해가지고 생각보다 쉽게 선정한 것 같다. 온보딩 크루들이 나 말고는 인싸 같았고, 나 혼자 템포를 못쫓아가서 나와는 완전히 다른 분위기라 우테코를 괜히 했나..?? 라는 생각도 많이 들었다 😭 우리 학교는 엄청 작기 때문에 다들 건너건너 이름을 자주 들었던 사람들이라 이미 다들 누군지 어느정도 알고 있는 상태에서 만나서 크게 부담감이 없었다. 그런데 처음 보는 사람들끼리 만나서 이야기를 나누니까 이거만큼 힘든 일도 없는 것..
-
[후기] 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴후기/책 후기 2023. 1. 29. 23:23
책 이름처럼 객체지향에 대한 내용을 배운 뒤에 대표적인 디자인 패턴에 대해 알려주는 책이다. 책은 크게 3가지 파트로 나뉜다. 1) 객체지향 '왜 객체지향적으로 코드를 작성해야 하는지?', '이론을 실전에 적용하려면 어떻게 해야하는지?'에 대한 답을 코드를 보며 이해할 수 있다. 다만 아쉬운 점은 이 책은 객체지향 개념만을 중점으로 설명하는 책은 아니다. 그렇기 때문에 객체지향 입문서를 읽어본 후에 책을 읽어보는 것이 더 도움이 되지 않을까 생각한다. 2) SOLID, DI와 서비스 로케이터 객체지향에 대한 기본적인 내용을 배웠다면, 객체지향 설계 원칙인 SOLID와 의존성 주입(DI), 서비스 로케이터에 대해 알아보게 된다. 다른 파트의 내용도 잘 작성했지만, 개인적으로 여기 파트가 핵심만 잘 파악해서..
-
[디자인 패턴] 템플릿 메서드 패턴 (Template Method)백엔드/객체지향 | 디자인패턴 2023. 1. 29. 09:56
템플릿 메서드 패턴의 경우에는 일부 구현이 다르지만, 실행 과정은 동일한 코드를 여러개 작성할 상황에서 적용하면 코드 중복을 줄여주는 디자인 패턴이다. 만약 네이버페이와 카카오페이의 결제 방식이 다음과 같다고 해보자 [네이버페이] 1. 네이버 아이디와 비밀번호를 입력하여 인증한다. 2. 포인트 충전을 한다. (+ 네이버 포인트 추가 적립) 3. 결제한다. [카카오페이] 1. 카카오 아이디와 비밀번호를 입력한다. 2. 포인트 충전을 한다. 3. 결제한다. 템플릿 메서드 패턴은 두 가지 종류가 있다. - 실행 과정을 구현한 상위 클래스 - 실행 과정의 일부 단계를 구현한 하위 클래스 본인 인증은 아이디와 비밀번호를 입력하는 것은 같지만, 내부 인증은 카카오와 네이버가 서로 다르다. 아이디와 비밀번호를 입력하..
-
[디자인 패턴] 전략 패턴 (Strategy)백엔드/객체지향 | 디자인패턴 2023. 1. 29. 09:55
전략 패턴은 특정 행동을 할 수 있는 알고리즘이 여러가지일 때, 프로그램을 실행 중에 알고리즘을 선택할 수 있도록 하는 패턴이다. 위 문장만 보면 이해하기 어렵지만, 알고보면 간단한 패턴으로 개방-폐쇄 원칙(OCP)을 지킬 수 있도록 도와주는 디자인 패턴이다. 만약 어떤 물건을 사고 결제를 할 때, 현금 결제나 카드 결제, 카카오페이를 선택할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 public class consumer { public void credit(int strategy, int money) { if (strategy == 1) { 현금 결제 } else if (strategy == 2) { 카드 결제 } else if (strategy == 3) { 카카오페이 결제 }..
-
[SOLID] 객체지향 설계 원칙백엔드/객체지향 | 디자인패턴 2023. 1. 28. 01:03
우아한테크코스 프리코스를 할 때, 인터넷에서 뒤적뒤적 거리면서 공부를 했었지만 간단한 코드와 글만 봐서는 이해가 되지 않았었다. 그런데 지금 객체지향 책을 읽어보니 이해가 되어서 나중에 까먹어도 최대한 쉽게 다시 이해할 수 있도록 정리를 해보았다. SOLID를 이해하려면 기본적인 객체지향 지식은 있어야 의미를 제대로 알 수 있다. 참고로 객체지향 설계는 지키면 지킬수록 좋은 이상적인 방법론이지 무조건 지켜야 한다는 것은 아니다. 그래서 완벽한 객체지향 설계가 아니더라도 최대한 객체지향 설계를 맞추게 된다면 유지보수하기 좋은 코드가 될 것이다. 1. 단일 책임 원칙 (SRP) 한 클래스는 하나의 책임을 가져야 한다. 객체지향 설계에서 중요한 것은 한 객체에 최소의 책임을 부여하는 것이다. 그래서 단일 책임..