2024/03 15

[Effective Java : Item 51] 메서드 시그니처를 신중히 설계하라

개요 메서드 시그니처란, 메서드의 이름과 매개변수 타입 리스트의 조합을 말한다. 이름이 같은 메서드라도 매개변수 리스트의 타입 순서나 구성이 다르다면 서로 다른 메서드 시그니처로 판단된다. 아이템 51에서는 메서드 시그니처와 관련된 API 설계 요령들을 간략하게 모아 소개한다. API 설계 요령 메서드 이름을 신중히 짓자(아이템 68). - 항상 표준 명명 규칙을 따라야 한다. - 같은 패키지에 속한 다른 이름들과 일관되게 지어야 한다. - 개발자 커뮤니티에서 널리 받아들여지는 이름을 사용하자. - 너무 긴 이름은 피하자. - 어렵다면 자바 라이브러리 API 가이드를 참조해도 좋다. 편의 메서드를 너무 많이 만들지 말자. - 메서드가 너무 많은 클래스 및 인터페이스는 익히고, 사용하고, 문서화하고, 테스..

Backend/Java 2024.03.12

[Lv.2 / 프로그래머스 / SQL] 조건에 맞는 개발자 찾기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 DEVELOPERS 테이블에 있는 개발자의 SKILL_CODE가 SKILLCODES 테이블의 C#, Python 코드 중 하나를 포함하는 ROW를 출력해야 한다. 비트연산자를 활용하여 개발자의 SKILL_CODE에 C# 혹은 Python의 CODE가 포함되는지 판별하도록 하자. SELECT DISTINCT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS AS D WHERE D.SKILL_CODE & (SELECT `CODE` FROM SKILLCODES WHERE ..

[Effective Java : Item 44] 표준 함수형 인터페이스를 사용하라

개요 상위 클래스의 메서드를 재정의해 원하는 동작을 직접 구현하는 것보다, 같은 효과의 함수 객체를 매개변수로 받는 메서드나 생성자를 제공하는 것은 보다 큰 유연함을 제공한다. LinkedHashMap 클래스의 protected 메서드인 removeEldestEntry를 예시로 살펴보도록 하자. protected boolean removeEldestEntry(Map.Entry eldest) { return false; } 새로운 원소를 추가하는 put 메서드는 이 메서드를 호출하여 true가 반환될 경우 가장 오래된 원소 하나를 제거한다. 이를 활용하여 원소의 최대 개수를 제한해 맵을 캐시처럼 사용할 수 있다. public class CustomLinkedHashMap extends LinkedHashM..

Backend/Java 2024.03.06

[Effective Java : Item 40] @Override 애너테이션을 일관되게 사용하라

개요 가장 흔히 볼 수 있는 애너테이션인 @Override는 상위 타입의 메서드를 재정의했음을 뜻한다. 이를 메서드를 재정의하고자 한다면 항상 일관되게 사용하는 것을 권장한다. @Override 애너테이션을 사용하지 않았을 때 발생할 수 있는 버그 예시는 다음과 같다. public class Bigram { private final char first; private final char second; public Bigram(char first, char second) { this.first = first; this.second = second; } public boolean equals(Bigram b) { return b.first == first && b.second == second; } publ..

Backend/Java 2024.03.05
반응형