📖 오늘의 학습
계기
메소드 안에 메소드를 작성하는 문법은 요즘 대부분의 언어에서 지원하는 문법이다. 하지만 일반적으로 이를 사용하지 않아도 대부분의 기능들은 충분히 구현이 가능하며, 이를 잘못 사용했다가 가독성만 안좋아지고 소통이 안 될 가능성이 있어서 그동안에는 잘 사용하지 않았다.
그러던 도중 이를 유용하게 사용할 상황을 마주했다.
유용하게 사용할 수 있는 상황
작업이 끝난 뒤, 작업에 사용된 오브젝트의 id와 state를 다른 컴포넌트들과 동기화를 시켜야하는 상황이 있었다. 모든 컴포넌트들이 listen하고 있다가 알아서 바뀌면 좋겠지만, listen을 설정해주는 작업을 해주는게 더 크기에 순회로 비교하며 값을 바꿔주기로 했다.
내가 바꿔줘야하는 데이터 리스트는 총 4개, 모두 같은 타입이다. 그런데 컨트롤러에 데이터를 바꾸는 메소드를 정의하는게 조금 꺼려졌다. 이유는 이러했다.
- 클래스 내부에서 단 하나의 메소드에서만 해당 메소드를 참조해서 사용한다.
- 클래스 외부에서 사용하지 않는다.
그렇다고 이를 메소드로 만들지 않고 하기에는 같은 작업을 변수 이름만 바꾸어 4번을 사용해야했다. 꺼려지긴 해도, 어쨌거나 메소드로 정의하는게 이득인 상황이다. 그래서 이런 상황에서 해당 메소드 내부에서만 사용할 수 있게 중첩 메소드를 정의하여 사용했다. ▼
if (event is SomeEvent) {
void updateState(someObjectList objectList) {
for (someObject object in objectList.content ?? []) {
if (object.id == event.id) {
object.state = event.state;
break;
}
}
}
updateState(objectList1);
updateState(objectList2);
updateState(objectList2);
updateState(objectList2);
}
이렇게 작성하니 하나의 메소드만 정의해도 되어 코드가 훨씬 깔끔해진다.
🤔 오늘의 회고
중첩메소드로 코드를 보다 깔끔하게 작성하긴 했지만, 협업에서 이 방식이 좋을지가 의문이다. 작성한 본인은 코드에 대한 이해도가 높기에 금방 알아차리지만, 그 외의 사람들은 해당 방식을 잘 사용하지 않을 수 있기에 정보의 동기화가 필요하다. 이 과정이 얼마나 빠르냐에 따라 좋고 나쁨이 갈릴거 같다.
상황을 보고 사용하는게 좋은거 같다.
'TIL' 카테고리의 다른 글
[TIL] 99클럽 코테 스터디 35일차 TIL : 클린 아키텍쳐 (0) | 2024.12.01 |
---|---|
[TIL] 99클럽 코테 스터디 34일차 TIL : null check (0) | 2024.11.30 |
[TIL] 99클럽 코테 스터디 33일차 TIL : Flutter 괴랄한 JSON 파싱 (0) | 2024.11.29 |
[TIL] 99클럽 코테 스터디 32일차 TIL : 구글 맵 (0) | 2024.11.28 |
[TIL] 99클럽 코테 스터디 31일차 TIL : AutomaticKeepAliveClientMixin (0) | 2024.11.27 |