#java자바 제네릭(Generics) 기초제네릭 클래스나 제네릭 메서드를 구현할 일이 거의 없어서 제네릭을 애매하게 알고 있었다. 나와 같은 상황인 초보 개발자분들도 많을 것 같 아서 제네릭에 대해 정리하고자 한다. 모든 내용을 한 글에 담기는 너무 길어져서 이번 글은 기초적인 내용을 알아보…
#loop몸체가 비어있는 무한 루프2018년 자바 입문서 한 권을 다 읽고 고수가 된 마음으로 소켓 프로그래밍 퀴즈 게임을 만든 적이 있었다. 최근에 그때의 난 어떤 코드를 작성했을까.. 하고 코드를 살펴보다가 그 당시 나를 며칠 동안 괴롭혔던 문제에 관한 기억이 떠올랐다. 이번 글…
#streamCollection.forEach와 Stream.forEach는 뭐가 다를까?자바 반복문 알고 쓰자! 를 작성하다가 궁금해진 내용이다. 아래처럼 Collection.forEach 메서드로 반복할 때와 Stream.forEach 메서드로 반복할 때는 무슨 차이가 있을까? 결론부터 말하면 대부분의 경우에 별 차이 없다. 조금의 …
#build자바 빌드 도구프로젝트를 진행하려고 할 때, 자바 빌드 도구를 선택해야 하는 순간은 찾아오기 마련이다. Gradle이 좋다는 말은 많이 들리는데, 전체적인 사용 률은 Maven이 앞선다. Google Trands 지수로 Maven과 Gradle의 전세계 검색 통계를…
#loop자바 반복문 알고 쓰자!반복문은 어떤 프로그래밍을 하든 기본 중의 기본이다. 우리는 처음 자바 문법 배울 때를 제외하고 반복문에 대해 다시 공부해본 적이 있는가? 있다면 이 글은 넘겨도 좋다. 다만 가장 빈번하게 사용하는 반복문을 너무 가볍게 여겨서는 안 된다. 이 글을 …
#springMockMvc VS RestAssuredMockMvc와 RestAssured는 우리가 애플리케이션을 개발할 때 테스트를 편리하게 할 수 있게 해주는 유용한 테스트 도구이다. 이 두 가지 도구는 비슷하면서도 다르다. 상황에 맞게 적절한 테스트 도구를 활용할 수 있도록 눈에 띄는 몇 가지 차…
#javaequals와 hashCode는 왜 같이 재정의해야 할까?equals와 hashCode는 같이 재정의하라는 말을 다들 한 번쯤 들어봤을 것이다. 대부분의 IDE Generate 기능에서도 equals와 hashCode를 같이 재정의해주며 lombok에서도 EqualsAndHashCode 어노테이션으로 같이…
#reflectionReflection API 간단히 알아보자.Spring Framework를 학습하다 보면 Java Reflection API를 자주 접하게 된다. 하지만 Reflection API는 자바 입문서에 잘 나오지 않는 내용이기 때문에 나와 같은 초보 개발자들에겐 다소 생소한 내용이다. 이 글을 통…
#classString 클래스를 조심히 사용하자.자바로 프로그래밍 할 때 java.lang.Object와 기본 자료형(Primitive Object)을 제외하고 가장 많이 사용하는 객체는 String 클래스일 것이다. String 클래스는 잘 사용하면 상관이 없지만, 잘못 사용하면 메모리와 성능에…
#law-of-demeter디미터 법칙(Law of Demeter)디미터 법칙은 “Object-Oriented Programming: An Objective Sense of Style”에서 처음으로 소개된 개념이다. 이 글의 저자들은 디미터라는 이름의 프로젝트를 진행하던 도중 다른 객체들과의 협력을 통해 프로그램을…
#oop상속보다는 조합(Composition)을 사용하자.우리는 다양한 이유로 상속을 사용한다. 코드를 재사용함으로써 중복을 줄일 수 있다. 변화에 대한 유연성 및 확장성이 증가한다. 개발 시간이 단축된다. 하지만, 상속의 장점들은 상속을 적절히 사용했을 경우에만 해당한다. 상속을 잘못 사용하면 변화에 유…
#hard-coding하드코딩을 피해라.안 좋은 코딩 습관을 얘기할 때면 꼭 언급되는 것이 하드코딩이다. 선배 개발자들은 하드코딩을 피하며 코딩하는 것이 당연하지만, 초보 개발자들은 하드코딩이 뭔지, 왜 하면 안 되는 것인지 모르는 경우가 대부분이다. 하드코딩이란? 프로그램의 소스 코드에…