String과 파라미터 타입에 대하여: 강타입을 강타입처럼

Sechan Beak·2023년 9월 5일
0

spring security의 url접근 제어에 관한 api 중 requestMatchers()라는게 있다. 파라미터로 RequestMatcher 인터페이스를 받고, 해당 인터페이스의 구현체중 하나의 인스턴스를 받아서 ant패턴 경로를 분석하여 url에 접근 조건을 부여한다.
ant 패턴은 경로를 표현하는 하나의 방법론이라고 보면된다.
ref) ant 패턴에 관한 글

재밌는 점은 해당 api 메소드의 오버로딩으로 String을 받는 메소드가 존재한다는 것이다. 내부적으로는 RequestMatcher의 구현체중 하나인 MvcRequestMatcher의 List형태로 변환해준다.

편의를 위해서 String 타입을 RequestMatcher의 형태로 변환하여 다시 호출하는 오버로딩을 만들어놨지만, 중요한건 결국 파라미터로 RequestMatcher를 받는 메소드가 기본이라는 것이다.

java와 같은 강타입 언어에서 매개변수를 String 타입으로 받는 것은, 강타입의 장점을 살리지 못하는 것이다. 따로 Classa를 만들어서 타입을 강제하는 것이 훨씬 좋은 방법인 것 같다. 또한 편의를 위한 String 타입을 받는 오버로딩을 만든다고하여도, 강타입을 적용한 다른 오버로딩을 호출하는 과정에서 예외가 발생하기에 버그를 잡기가 훨씬 편할 것이다.

아주 기본기이기는 하지만, 본인 시점에서만 개발하다보면, 나중에 코드를 읽을 사람들(본인 포함)의 시점에서 생각해보는 것을 놓치게 된다. 때문에 항상 코드에 대한 배경이 없는 사람이 읽었을 때도 길을 잃지 않도록 코드를 작성하는 것이 중요하겠다.

profile
거사 하나 치르면 올림

0개의 댓글