이펙티브 자바 아이템 6 적용기 🌱

Jimin Lim·2022년 6월 30일
0

Spring

목록 보기
3/17
post-thumbnail

🌱 아이템 6 적용기

👉🏻 이펙티브 자바 아이템6

아이템 6은 불필요한 객체 생성을 피하라 라는 내용이었다. 여기에 정규식 관련 내용이 나오는데, 이번 프로젝트하면서 정규식을 확인하는 로직이 있어 이 책 내용을 적용해 보았다.

대략적인 내용은 '정규식과 같이 비싼 객체가 계속해서 필요하다면 캐싱하여 사용하라' 였다.
(이펙티브 자바지만.. 언어는 코틀린을 사용하였다..🤣)

object ValidationRegex {
	private val EMAIL_REGEX = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE)
	//숫자, 영어 조합 8자리 이상
	private val PASSWORD_REGEX = Pattern.compile("""^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[${'$'}`~!@${'$'}!%*#^?&\\(\\)\-_=+]).{8,50}${'$'}""")

	fun isRegexEmail(email: String): Boolean {
		return EMAIL_REGEX.matcher(email).matches()
	}

	fun isRegexPassword(password: String): Boolean {
		return PASSWORD_REGEX.matcher(password).matches()
	}
}

코틀린에서 object는 클래스를 정의하는 동시에 인스턴스를 생성하며 싱글톤을 보장해주는 키워드다. 또한 자바에 존재하는 static을 대체해 사용할 수 있게 해준다.

아무튼! 클래스 초기화 과정에 캐싱해두고 isRegexEmail과 같이 정규식 확인 메서드가 호출될 때마다 이 인스턴스를 재사용하도록 하였다.

참고 자료

https://velog.io/@changhee09/%EC%BD%94%ED%8B%80%EB%A6%B0-object-%ED%82%A4%EC%9B%8C%EB%93%9C

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글