java 64

Dart 공부하기

새로운 언어를 공부하게 되었다! 공식문서 https://dart.dev/ 비교적 최근에 나온 언어들이 그렇듯이 공식문서가 굉장히 잘되어있다. Dart programming language Dart is a client-optimized language for fast apps on any platform dart.dev 자바를 하다가 다트를 시작한 느낌은, 1. 객체지향 + 정적 + 컴파일러라서 접근하기 쉽다. 2. Null Safe!!!!! 3. 좀 더 간결하다(생성자의 new 등 자바에서는 반드시 써야했던 것이 많이 생략되어 있다.) DartPad DartPad를 통해 웹에서도 연습할 수 있다. https://dartpad.dev/? DartPad dartpad.dev Flutter를 위한 언어인만큼..

Language/Dart 2022.08.18

20220803 #Factory

휴가가 끝나고 돌아오니, 새로운 리펙토링이 있었다. 휴가를 가기 전에 전략패턴을 사용하면서 type에 맞는 구현체를 찾아올 때 어떤 방법이 좋을지 고민이 있었다. 컨트롤러에서 해당 구현체를 List로 주입하고 type을 비교하는 메서드를 하나 만들어서 해당 구현체를 넣어주었는데, 구현체를 찾기 위한 목적의 메서드를 하나 만든다는 것에서 좋은 방법은 아닌 것 같았다. 팩토리를 사용하자는 의견이 있었는데, 며칠 자리를 비운 사이에 리팩토링이 되어 있었다. 컨트롤러에서는 Factory에 있는 메서드를 사용하고, Factory에서는 switch문을 사용해서 type에 따라 알맞은 구현체의 해당 메서드가 실행되도록 하였다. Factory가 너무 지저분해지지 않을까, 하는 걱정도 있었는데 구현해놓고 보니 오히려 가..

회고 2022.08.07

20220706 TIL #테스트코드 리펙토링 @DataJpaTest @SpringBootTest

프로젝트에서 추가되거나 변경된 기능이 많다보니 사용하지 않는 변수나 메소드, enum이 많아졌다. 아직 어떤 맥락인지 파악이 가능할 때 정리하는 게 좋을 것 같아서 틈틈히 수정하고 있다. 비즈니스 로직을 수정하다보면 테스트코드도 수정이 필요할 때가 있어서 같이 보게 되는데, 테스트코드에도 삭제하고 치워야 할 흔적들이 많이 남아있었다. 특히 테스트코드에서 TestBase 클래스를 만들어서 공통으로 사용하는 클래스를 주입하거나 설정들을 동일하게 사용하는 경우들이 있었는데, 계속 새로 추가되면서 비슷한 TestBase 클래스가 여러 개 생긴 것을 확인할 수 있었다. 현재 프로젝트에서 단위테스트와 통합테스트를 하고 있는데, 통합테스트의 경우에는 @DataJpaTest를 사용하는 경우도 있고, @SpringBoo..

회고 2022.07.08

20220703 TIL #불변 객체를 사용하는 이유

개발을 시작하고 코딩을 하면서, 이 책에서는 몇 번을 읽어도 이해가 안되던 설명이 우연히 다른 걸 공부하다가 '아, 이런 뜻이었구나' 할 때가 있다. 자바를 공부하면서 이해가 잘 안되는 용어 중 하나가 '불변 객체'를 사용하는 것이었다. 그런데 김영한님의 JPA 강의를 듣다가 왜 불변객체를 권장하는지 조금 이해하게 된 것 같다. 모두 다 정확하게 이해한 건 아니지만, 앞으로 공부하는데 실마리가 될 것 같아서 기록해둔다. primitive type과 달리 객체는 참조가 가능하다. 즉, 각각의 변수들이 같은 객체를 참조하고 있을 수 있다. 예를 들어, 새로운 Value a를 만들고, b가 a를 가리킨다면 둘은 같은 객체를 참조하게 된다. public static void main(String[] args) ..

회고 2022.07.05

[프로그래머스] K번째수 #Arrays.copyOfRange

https://programmers.co.kr/learn/courses/30/lessons/42748?language=java 주어진 조건에 따라 배열에서 원하는 값을 찾아서, 배열로 출력하는 문제이다. int배열을 주어진 범위를 index로 잘라서 복사하는 메서드를 새로 알게 되었다. java.util.Arrays에 있는 메서드이다. 배열이기 때문에 from과 to가 배열의 범위를 벗어나면 에러가 발생한다. public static int[] copyOfRange(int[] original, int from, int to) { int newLength = to - from; if (newLength " + to)..

Language/JAVA 2022.07.01

20220630 TIL #객체에게 메시지를 보내자

넥스트스탭에서 과정을 수강하고 있는데, 최근에 굉장히 인상깊은 내용이 있었다. 객체를 가져와서 그 값을 처리하는게 아니라, 해당 객체에게 메시지를 보내라는 것이다. 예를 들어서, 이런 식으로 if문에 원하는 조건을 검증하기 위해 해당 객체의 값을 getter로 가져와서 비교하는 것이 아니라 for (int i = 0; i < QUANTITY_OF_BALL; i++) { if (Integer.parseInt(inputs[i]) == answer.getBalls().get(i)) { strikeCnt++; continue; } for (int j = 0; j < QUANTITY_OF_BALL; j++) { if (Integer.parseInt(inputs[i]) == answer.getBalls().get(..

회고 2022.07.01

20220621-22 TIL #인터페이스 #동적 파라미터화 #일급컬렉션

을 읽기 시작했다. 책 자체가 굉장히 잘 쓰여져 느낌을 받았고, 편집도 좋다. 아마 최근에 관심 주제랑도 맞닿아 있어서 더 그런 것 같은데, 왜 람다를 사용해야 하는지에 대해 설득력 있게 느껴지고 있다. 특히 동적 파라미터화로 메서드를 전달할 수 있다는 점이 재미있다. 1. 인터페이스를 활용하면 메서드를 변수로 받을 수 있다. 예를 들어 List을 색깔로 필터할 수 있다. public static List filterApplesByColor(List inventory, Color color) { List result = new ArrayList(); for (Apple apple : inventory) { if(apple.getColor().equals(color)) { result.add(apple);..

회고 2022.06.22

[Java with Unit Test] equals와 hashCode

넥스트스텝에 있는 를 시작했는데, 여기서 학습테스트를 소개하고 있다. https://edu.nextstep.camp/c/9WPRB0ys/ 플레이그라운드 edu.nextstep.camp 익숙하지 않은 API를 공부할 때 단위테스트를 작성하면 해당 API의 사용법도 알 수 있고, 단위테스트에도 익숙해질 수 있다. 코스 시작 부분에서 예제로 String의 몇몇 메서드들을 Junit과 AssertJ를 사용해 단위테스트를 작성하는 연습을 할 수 있다. 단위테스트를 통해 어떤 값이 들어가고, 그 결과가 어떻게 출력되는지 바로 알 수 있어서 좋다. 그래서 Java 공부를 할 겸 프로젝트를 하나 만들었다. Object 모든 클래스의 최고 조상이기 때문에 모든 클래스에서 바로 사용이 가능하다. equals(Object ..

Language/JAVA 2022.06.16

20220607 TIL #쉬기 공부하기 #테스트코드 #자바

모처럼 3일 연휴였다. 직전에 선거날로 하루쉬어서 되게 긴 연휴처럼 느껴질 줄 알았는데 전혀 아니었다. 일단 토요일부터 하루종일 너무너무 피곤했다. 아니 분명 정시에 퇴근하고 있는데 왜 이렇게 피곤한지 모르겠다. 운동을 시작했으니 좀 나아지려나...? 연휴니까 좀 놀고 싶기도 했고, 근데 한편으로는 연휴동안 밀린 공부를 좀 해야겠다고 생각했다. 근데 또 몸이 피곤하니까 잠도 좀 자고싶고?? 토일을 좀 쉬면서(사실 공부해야된다는 강박감이 살짝 생겼다ㅋㅋㅋ요새 대학원 시절이 생각나는 중ㅋㅋㅋ) 월요일에는 그래도 컨디션이 좀 좋아져서 책도 좀 보고 강의도 들었다. 우선, 를 보기 시작했다. 지금 프로젝트에서 단위 테스트 코드를 짜면서 실질적으로 공부가 좀 필요한 것 같아서 구입했다. 그래도 프로젝트하면서 간단..

회고 2022.06.08

20220516 TIL #for, stream, 어떤 방식으로 구현할 것인가

JPA 강의 듣기 자바의 정석 공부 소프트웨어 장인 읽는 중 요즘에는 항해 하면서 급하게 기능을 구현하느라 제대로 공부하지 못한 개념들(JPA, 자바 등등)을 정리하는 중인데 생각만큼 속도가 나가지 않는 것 같다. 아무래도 일을 시작하고 나니 조급함이 많이 생긴다. 빨리 팀에 도움이 되고 싶고, 일이 주어졌을 때 더 잘 해내고 싶다. 그래서 간단하게 라도 TIL을 쓰기 위해 노력해야겠다. 마음이 급해지니 짧게라도 오늘 한 것을 남기면서 리마인드하고, 페이스를 조절해야 겠다. 지난주에 작성한 코드 중에 Enum에서 선언한 String을 Enum으로 변환하는 코드가 있었다. 예를 들면, DEPOSIT("입금")에서 "입금"을 DEPOSIT으로 변환하는 것을 구현했다. 구글링 한 코드를 참고하여 for문으로..

회고 2022.05.16