다음 DataBase 코드는 저항 스탯을 저장함.
이 코드에서 값 검증을 위해서 Enum 값 검증 하고, 중복시 초기화하고 삭제함. 후입선출로 이전 값으로 유지하되 다음 값은 삭제함
하지만 이 코드는 List<ResisatanceDefiniition>에 대해서만 되는 상황에서 이 코드들을
Enum 타입을 기반으로 데이터 정합성을 검증해서 무결성을 체크하게 바꿈
즉 데이터 검증 체크를 하나의 네임스페이스 분리 한 후, 이 툴을 분리하고 이걸 범용적으로 바꾸어보면
이런식이 되지만 특정 타입에 대해서 범용적으로 쓰게되지만 로직의 목적성이 떨어짐
따라서 이것은 코드의 추상화 정도가 올랐다고 할 수 있음.
그럼 1번 코드에서 기본적으로 추상도가 높아짐에따라서,
기존의 List<ResistanceDefintion>을 바로 알기 어렵고, 범용 메서드 사용을 추가함으로써 더 알아먹기 힘들어지는거
다만 다음에 똑같이 Enum 기반으로 데이터 정합성 검증을 할 수 있지만, 타입 직관성이 떨어지는거
따라서 추상도가 높아진다는건
특화 검증 로직에서 범용 타입에 대한 타입 검증이 됨에따라서, 직관성이 줄어들어서 가독성이 줄어들게 되는거임.
물론 가독성이 개개인의 차이가 있지만 범용 매서드일수록 가독성이 떨어진다는 건 일반적인 세간의 인식이 그러함
와닿지 않는 부분이 있어 정리함. 내맘대로 일단 위 글을 요약해봄. '추상도가 높다는걸 설명할게. 추상도가 높다는 건 인간의 걷기를 동물의 걷기로 표현하는 거야. 그러면 동물의 걷기로는 인간의 걷기를 표현하기 힘들지? 그건 추상도가 높다는건 직관성과 가독성이 떨어진다는 의미야.' 약간 설명이 요런느낌이 듬. 헷갈리게 만드는 부분은 일단 제목인 추상도가 높다는 글인데 이 글은 추상도가 높다는 것과 추상도의 복잡함을 동시에 설명함 SRP 위배함. 그리고 예에서 걷기라는 것은 그냥 발달린걸로 움직인다의 추상화에 가까운 느낌인데 사람의 걷는방법이라는 추상화느낌으로 걷기라는것을 대하는 느낌임.... 추상화하면 일반적으로 직관성이 높아지고 가독성도 늘어나야는게 정설아님?
굳이 결론을 내야한다면 코드의 은닉성이 올라가고 직관성과 가독성이 올라갔다. 이게 어울리진않을ㄲㅏ - dc App
ㄴㄴ 행동로직이랑 오히려 상태로직 분리라서 음. 모르겠네
걍 Where().DistinctBy().ToList() 쓰면안됨?
DistinctBy는 Inlq에 없음.
https://learn.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.distinctby?view=net-8.0
헐 머야 있었네