반응형
문법 설탕이 뭐야?
말하는건 똑같아도 짜증나게 말하는 사람이 있고, 듣기 좋게 말하는 사람이 있듯, 코드도 하는건 똑같아도 읽기 쉬운 코드가 있고 읽기 힘든 코드가 있습니다.
문법 설탕은 꼭 써야 하는건 아니지만 2가지 장점이 있어 알아두면 좋습니다.
1. 더 읽기 쉬운 코드를 쓸 수 있습니다.
2. 자주 쓰는 기능을 내가 직접 구현하지 않고 내장함수를 써 더 빠른 코딩이 가능합니다.
어떻게 활용할까?
우선, 문법 설탕이 아무리 코딩을 빠르게 해 주고 읽기 쉬운 코드를 만들어 준다고 해서 영어 단어 외우듯 외울 필요는 없다고 생각합니다. 대신, 저는 많이 써 보면 자연스럽게 적재적소에 활용할 수 있게 됐습니다.
자연스럽게 활용하기 위해 추천하는건 항상 코딩 테스트나 코드를 작성하고 리팩토링(Refactoring)을 잠깐이라도 해 보는 습관을 가지는게 중요합니다.
리팩토링을 할 때는 아래 3가지 요소에 집중해 보세요.
- 더 읽기 쉽게 할 수는 없을까? (가독성 있는 변수명, 너무 길거나 공통된 코드는 함수로)
- (가독성을 해치지는 않으면서) 짧게 쓸 방법은 없을까?
- 내가 직접 구현한게 내장함수에 이미 있지는 않을까?
또, 내가 자주 쓰는 문법 설탕은 Notion 같은 곳에 내 방식대로 한 페이지에 정리해 놓으면 참고가 많이 됐습니다.
데이터 타입 변환 관련 문법 설탕
String -> Char Array
exampleString.toCharArray();
Char Array -> String
String.valueOf(exampleCharArray);
String Array -> String
String.join("", exampleStringArray);
List<Integer> -> int[]
exampleList
.mapToInt(Integer::intValue)
.toArray();
String 관련 문법 설탕
어떤 String이 다른 String의 일부분인지 확인
str1.matches("(.*)" + str2 + "(.*)")
String 거꾸로 뒤집기
new StringBuilder(exampleString).reverse().toString();
String이 Integer인지 확인
.matches("-?\\d+");
Array 관련 문법 설탕
Array가 특정 원소가 있는지 판단하기
Arrays.asList(array).contains(element);
Stream API 문법 설탕
Array에서 특정 원소 몇 번 나오는지 셀 때
(int) exampleArray.stream()
.filter(조건)
.count();
String Stream -> String
exampleStringStream.collect(Collectors.joining());
2D Array Stream -> 1D Array Stream
.flatMap(Collection::stream)
Collection API의 Map 문법 설탕
뭐가 몇 개 있는지 셀 때 : 해당 값이 없으면 1을 넣고, 있으면 이미 있는 값에 1 더하기
exampleMap.merge(key, 1, Integer::sum);
Map을 선언하면서 기본값 부여 (최대 10개)
Map<String, String> exampleMap = Map.of(k1, v1, k2, v2, k3, v3 등);
주의할 점
보기는 편해도, 일부 문법 설탕은 속도가 불리한 경우가 있습니다. 성능이 중요한 경우, 가독성을 어느정도 희생하더라도 성능을 신경 쓸 필요가 있습니다.
반응형
'CS 이론 > 🤖 알고리즘, 자료구조' 카테고리의 다른 글
동적 계획법(Dynamic Programming) 알아보기 (0) | 2023.04.15 |
---|---|
코딩 테스트에서 최대공약수(GCD), 최소공배수(LCM) 유클리드 알고리즘으로 구하기 (0) | 2023.04.07 |
가변 배열(Dynamic Array), 리스트(List) (0) | 2021.05.28 |
모든 자료구조는 배열(Array)로 통한다 (0) | 2021.05.24 |
추상 자료형(Abstract Data Type)을 왜 알아야 할까 (0) | 2021.05.22 |