요즘 사이드 프로젝트로 앱 개발을 생각하고 있는데, 플러터를 배워보는 건 어떨까 싶어서 자바스크립트 개발자로서 Dart 배우기라는 문서를 읽었다.
개발 공부 초기에 잠깐 배웠던 Python을 제외하고 JavaScript 이외의 언어를 공부하는 건 처음이었는데 JavaScript와의 차이점을 발견하는 과정이 재밌었다.
var fruits = [];
assert(fruits.isEmpty);
예를 들면 Dart에서는 isEmpty라는 메서드를 제공한다. JavaScript의 관점에서 설명하자면 빈 배열인지를 boolean 값으로 출력해주는 메서드인 것이다.
우연히 이에 대해 그룹장님과 이야기를 나눌 기회가 있었다. "JavaScript에는 이런 메서드가 없어서 매번 array.length === 0으로 코드를 작성해야 돼서 불편하다."고 말씀드렸더니 "그럼 만들어서 쓰면 되잖아?" 하시는 거다.
그러고 보니 나는 왜 그런 생각을 못했을까? 없어서 불편하면 직접 만들어서 쓰면 되는건데!
export const isEmptyArray = (array) => {
const isNotArray = !Array.isArray(array);
if (isNotArray) return false;
return array.length === 0;
};
그래서 당장 utils 폴더에 파일을 하나 추가해서 isEmptyArray라는 함수를 생성했다.
const handleFilterOnChange = (array) => {
// as is
if (array.length === 0) return;
// to be
if (isEmptyArray(array)) return;
// ...
}
함수에서 주어진 배열이 빈 배열인지 판단 후 early return하는 로직이 있었는데 코드를 이렇게 수정했다.
빈 배열인지 판단하는 함수뿐만 아니라 빈 객체인지 확인하는 함수, Date 형식의 데이터를 string으로 포맷하는 함수 등 다양한 함수를 만들 수 있을 것이다.
별 거 아닌 일화지만 어쩌면 개발자의 본질과도 닿아있는 거 같다. 반복되는 로직이 비효율적이고 불편하다? 그럼 직접 만들어서 쓰면 된다!