메서드 이름을 신중히 짓자. 표준 명명 규칙 (아이템 68) 따를 것.
public class NamingConventionsExample {
// 명확한 메서드 이름: 리스트의 모든 요소를 출력
public void printAllElements(List<String> elements) {
for (String element : elements) {
System.out.println(element);
}
}
// 명확한 메서드 이름: 두 숫자의 합을 반환
public int addNumbers(int a, int b) {
return a + b;
}
// 명확한 메서드 이름: 주어진 문자열이 null 또는 빈 문자열인지 확인
public boolean isNullOrEmpty(String str) {
return str == null || str.isEmpty();
}
public static void main(String[] args) {
NamingConventionsExample example = new NamingConventionsExample();
// 메서드 호출 예제
example.printAllElements(List.of("Apple", "Banana", "Cherry"));
System.out.println("Sum: " + example.addNumbers(5, 10));
System.out.println("Is null or empty: " + example.isNullOrEmpty(""));
}
}
편의 메서드를 너무 많이 만들지 말자.
**// 편의 메서드가 너무 많은 클래스**
public class TooManyConvenienceMethods {
private List<String> elements;
public TooManyConvenienceMethods(List<String> elements) {
this.elements = elements;
}
public void addElement(String element) {
elements.add(element);
}
public void removeElement(String element) {
elements.remove(element);
}
public boolean containsElement(String element) {
return elements.contains(element);
}
public int getElementCount() {
return elements.size();
}
public String getElementAt(int index) {
return elements.get(index);
}
// ... 기타 편의 메서드들
}
**// 적절한 메서드만 포함한 클래스**
public class AppropriateMethods {
private List<String> elements;
public AppropriateMethods(List<String> elements) {
this.elements = elements;
}
public void addElement(String element) {
elements.add(element);
}
public void removeElement(String element) {
elements.remove(element);
}
public boolean containsElement(String element) {
return elements.contains(element);
}
// 필요한 메서드만 포함
}
매개변수 목록은 짧게 유지하자. (4개 이하로) • 여러 메서드로 쪼갠다.
// 매개변수 목록을 짧게 유지하기 위해 메서드를 쪼갠 예제
public void processOrder(Order order) {
validateOrder(order);
processPayment(order);
shipOrder(order);
}
private void validateOrder(Order order) {
// 주문 유효성 검사 로직
}
private void processPayment(Order order) {
// 결제 처리 로직
}
private void shipOrder(Order order) {
// 배송 처리 로직
}
public static void main(String[] args) {
Order order = new Order("John Doe", "123 Main St", "Laptop", 1, 999.99, "Credit Card");
SplitMethodsExample example = new SplitMethodsExample();
example.processOrder(order);
}
• 매개변수 여러 개를 묶어주는 도우미 클래스를 만든다.
• 두 방법을 혼합한 것으로, 객체 생성에 사용한 빌더 패턴을 메서드 호출에 응용한다.
매개변수 타입으로는 클래스보다는 인터페이스가 더 낫다.
boolean 보다는 원소 2개짜리 열거 타입이 더 낫다.
**- true, false 의 의미를 알 수 없기 때문에 enum 으로 판단하기**
public class EnumExample {
public enum Status {
SUCCESS,
FAILURE
}
public static void main(String[] args) {
Status status = performOperation(Status.SUCCESS);
System.out.println("Operation status: " + status);
status = performOperation(Status.FAILURE);
System.out.println("Operation status: " + status);
}
public static Status performOperation(Status status) {
if (status == Status.SUCCESS) {
System.out.println("Operation was successful");
return Status.SUCCESS;
} else {
System.out.println("Operation failed");
return Status.FAILURE;
}
}
}