커피가 딱 맞는 아침이었고 코드가 컵에 담긴 커피처럼 부드럽게 흐르는 것 같았습니다. 당신은 책상에 앉아 프로젝트의 특히 형편없는 부분, 즉 며칠 동안 문제를 일으켰던 모듈을 처리할 준비를 했습니다. 문제는 복잡한 논리가 아니라 한 줄씩 계속 이어지는 듯한 투박하고 반복적인 코드였습니다.
당신은 한숨을 쉬며 의자에 등을 기대었습니다. 더 좋은 방법이 있을 거라 생각하셨죠.
어젯밤 늦게까지 잠을 이루지 못하게 했던 버그에 대한 생각이 다시 떠올랐습니다. 이는 교활하고 추적하기 어려운 버그 중 하나였습니다. 변수가 너무 광범위하게 선언되어 발생하는 오류였습니다. 범인은 필요한 후에도 오랫동안 외부 범위에 남아 있는 변수를 사용하여 몇 주 전에 작성한 if else 문이었습니다.
Object obj = 123; String result; if (obj instanceof String) { result = (String) obj; } else { result = obj.toString(); } System.out.println(result);
물론 코드는 작동했습니다. 하지만 뭔가가 당신을 괴롭히더군요. 변수 결과는 이전 흐름의 유령처럼 더 넓은 범위에 매달려 있어 혼란을 야기하거나 더 나쁜 또 다른 버그를 일으킬 준비가 되어 있었습니다.
그런데 Java 17에서 읽은 내용이 생각났습니다. 바로 흐름 범위 지정이라는 작은 기능이었습니다. 그것은 큰 변화를 가져올 수 있는 작은 변화 중 하나였습니다. 흐름 범위 지정을 사용하면 변수를 필요한 특정 블록으로 제한하여 나머지 코드를 깔끔하고 집중적으로 유지할 수 있습니다.
한 번 시도해 보기로 결정하셨습니다.
Object obj = 123; if (obj instanceof String str) { System.out.println(str); } else { System.out.println(obj.toString()); }
무게를 들어올린 것 같았습니다. 코드는 더 단단하고 우아해졌습니다. 불필요한 변수가 사라지고 완벽하게 이해되는 흐름이 남았습니다. 미소를 지을 수 밖에 없었습니다. 작은 승리였지만 그래도 만족스럽습니다.
당신의 성공에 고무되어, 당신을 괴롭혔던 다른 코드 섹션으로 눈을 돌렸습니다. 이는 전형적인 시나리오였습니다. 문자열, 정수, Double 등 무엇이든 될 수 있는 개체이며, 이를 사용하여 무엇이든 하기 전에 해당 유형을 확인해야 했습니다.
이전 방식은 좋은 부분에 도달하기 위해 여러 단계를 거쳐야 하는 투박했습니다.
Object obj = "Hello, World!"; if (obj instanceof String) { String str = (String) obj; System.out.println(str.toUpperCase()); }
당신은 그것을 보면서 신음했습니다. 물론 작동했지만 왜 유형을 확인한 다음 캐스팅해야 했나요? 왜 이보다 더 간단할 수 없나요?
그때 Java 17의 또 다른 작은 보석인 instanceof에 대한 패턴 일치가 생각났습니다. 이는 단순한 구문 설탕이 아니라 코드를 간소화하여 더 읽기 쉽고 덜 쉽게 만드는 방법이었습니다. 오류가 발생하기 쉽습니다.
차이점을 확인하기 위해 코드를 리팩터링하셨습니다.
Object obj = "Hello, World!"; if (obj instanceof String str) { System.out.println(str.toUpperCase()); }
효과는 즉각 나타났습니다. 코드가 더 깔끔하고 간결해졌습니다. 유형 검사와 캐스트는 이제 모두 한 줄로 동일하고 동일해졌습니다. 마치 코드가 사용자의 언어로 말하는 것 같았고 불필요한 소음 없이 원하는 작업을 정확하게 수행했습니다.
날이 갈수록 이러한 기능을 점점 더 많이 사용하고 숙련된 장인처럼 코드에 적용하게 되었습니다. 여러분은 이러한 작은 변화, 즉 부분의 합보다 더 큰 것을 만들기 위해 협력하는 방식에서 아름다움을 보기 시작했습니다.
오후에는 항상 약간 투박하게 느껴졌던 오래된 코드를 리팩토링하는 데 몰두했습니다. 이는 각 요소마다 고유한 특수 처리가 필요한 혼합 유형의 배열을 처리하는 루프였습니다. 이전에는 각 유형을 확인한 후 명시적인 캐스트를 수행하여 코드가 장황했습니다.
하지만 이제 Java 17의 흐름 범위 지정 및 패턴 일치를 통해 더 나은 방법을 발견했습니다.
public class PatternMatchingDemo { public static void main(String[] args) { Object[] elements = {"Java", 17, 3.14, "Pattern Matching"}; for (Object element : elements) { if (element instanceof String str) { System.out.println("String: " + str.toUpperCase()); } else if (element instanceof Integer i) { System.out.println("Integer: " + (i * 2)); } else if (element instanceof Double d) { System.out.println("Double: " + (d * 2)); } else { System.out.println("Unknown type"); } } } }
각 로직 블록이 자체 범위 내에 포함되고 변수가 특정 흐름에 깔끔하게 연결되어 코드가 간소화되었습니다. 이렇게 작은 변화가 이렇게 큰 영향을 미칠 수 있다는 사실에 놀랐습니다. 반복적인 상용구는 사라지고 딱 맞는 명확성과 단순함으로 대체되었습니다.
오늘의 짐을 꾸리면서 Java 17이 코드를 얼마나 변화시켰는지 반성하지 않을 수 없었습니다. 화려한 새 기능은 아니었지만 그 자체로 조용한 방식으로 강력했습니다. 흐름 범위 지정 및 패턴 일치는 더 효율적일 뿐만 아니라 읽고 유지하기 쉬운 코드를 작성하는 데 도움이 되었습니다.
소프트웨어 개발의 세계에서는 작은 것이 가장 큰 변화를 만드는 경우가 많습니다. 그리고 오늘 여러분은 Java 17의 작은 트릭인 흐름 범위 지정 및 패턴 일치가 한 번에 한 줄씩 코드를 개선하는 데 꼭 필요한 것임을 알게 되었습니다.
위 내용은 작은 조정의 힘: Java의 흐름 범위 지정 및 패턴 일치 공개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!