Method 5

IntelliJ plugin을 만들어 보자 - method tester (1)

IntelliJ plugin을 만들고 배포해 보자 - method tester (1)(이 내용은 어떤 플러그인을 만들까에 대한 내용이다. 만드는 방식은 이후에 적을 예정이다.)개발을 하면서 프로젝트의 크기가 커지고 기능을 잘 나누어 둔다면 하나의 메서드를 여기저기서 재활용하는 경우가 참 많아지게 된다.그리고 이를 처음에 만들 때에는 잘 만들어 두었고 더이상 변경의 여지가 없을 거라고 생각했는데, 어떠한 이유로 리팩터링을 진행할 수 있다.근데 그렇게 되면 이게 잘 고쳐졌는지, 다른 로직에 이상이 없는지를 바로 테스트하기가 참 애매하다.예를 들어, 다음과 같은 클래스가 있다고 가정해 보자.import org.springframework.stereotype.Component;@Componentpublic cl..

Default, Static method in java(feat. JDK8, 그 이후)

Default, Static method in java(feat. JDK8, 그 이후) 인터페이스를 공부하다 보면 자주 나오는 메서드들이다. 어떤 것인지, 어떻게 쓰이는지 차이를 알아보자. java interface 먼저 인터페이스에 관한 기본적인 설명은 얘랑 얘를 보면 대충 감이 잡힐 것이라 생각한다. 기존에는 interface를 만들고, 이를 구현하는 부분을 따로 implements하여 작성해 주어야 했다. JDK 8에서의 변화 JDK8부터 interface에서 default, static 메서드의 사용이 가능해졌다. default method Default가 뭔데? 싶을 수 있을 것이다. 사실 이름 그대로 기본적으로 기능을 갖고 있는 메서드를 뜻한다. 예를 들어, 류찬의 외모 설명 이라는 메서드를 ..

이론 정리/java 2023.04.04

HTTP methods(멱등성, safe, post requestbody 검색, patch-put차이 등등..)

먼저 글을 시작하기 전에 몇가지 내용을 설명하려 한다. Http methods가 뭔데 브라우저가 서버로 데이터를 전달하는 방법이다. 보통 이는 request header부분에 명시된다. 멱등성 멱등성이란, 여러 번 연산을 수행해도 동일한 결과를 보장하는 성질을 뜻한다. 이게 수학적으로 보면 f(f(x)) = f(x) 인 경우 멱등법칙을 만족한다는 것이다. Safe Safe Methods인지 아닌지를 판단하는 것으로, 서버의 상태를 변경시키지 않는 HTTP 메서드들을 뜻한다. 말하자면 해당 메서드가 실행되었을 때에 상태가 변경되는지를 의미한다. REST Api 알다시피 REST api에서 우리는 get, post, put, patch, delete, HEAD, OPTIONS 와 같은 여러 메소드를 사용한다..

이론 정리 2023.01.08

메서드 참조

메서드 참조(Method reference) 하나의 메서드만 호출하는 람다식은 메서드 참조로 더 간단히 할 수 있다. 종류 람다 메서드 참조 static메서드 참조 (x) -> ClassName.method(x) ClassName::method 인스턴스메서드 참조 (obj, x) -> obj.method(x) ClassName::method 특정 객체 인스턴스메서드 참조 (x) -> obj.method(x) obj::method 사용법은 그냥 클래스이름::메서드이름 으로 적어주는거임. 저중에서 특정 객체 인스턴스메서드 참조는 잘 안쓰이고, 위의 두개가 쓰인다. Static 메서드 참조 Integer method(String s) { // 그저 Integer.parseInt(String s) 만을 호출 r..

이론 정리/java 2023.01.08

팩토리 메소드 패턴

펙토리 메소드 패턴 tags: Tag(GoF디자인 패턴) 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다. 그니까 그 껍데기를 추상적인 Interface 껍데기로 감싸는 것이다. Factory역할을 할 interface를 만들어준다. 이 interface내의 추상화 메소드를 하위 클래스에서 구체적으로 만들어준다. 그리고 이거의 결과로 나오는것도 문제 상황 public class Client { public static void main(String[] args) { Client client = new Client(); Ship whiteship = ShipFactory.orderShip("WhiteShip", "fbcks97@naver.com"); Ship blackShip = ShipFacto..

이론 정리/java 2022.12.12