일단 코드를 짤때
두괄식으로 짜게 된다.
예를 들자면
자 이 코드를 보자.

인턴의 코드를 수정해주면서 짠 코드인데
대충
result 를 fetch 해오는데, 안에 데이터중에 null값이 있어서 set을 해주는 결과다.
인턴이 내 방식 따라한답시고 맨 바깥쪽에다가 map을 걸고선, ri -> ri 를 하고 있더라고.
내가 그래서.
인턴님, 이거는 부작용이잖아요.
일단, null을 포함시킨다음에 setter를 작동시키는 방식 자체가 부작용으로 코드를 짜겠다는 것이고 제 스타일이 아닙니다.
제 스타일이었으면 null 이 없는 타입의 DTO를 뽑아온 다음, 추가 데이터를 붙여넣는 새로운 타입의 DTO 로 매핑을 했겠죠.
일단, setter를 쓰는 방식이므로
부작용을 한번씩 실행시키기 위해 forEach를 씁시다.
예
그러면
forEach(ri -> ri.set(something)) 이겠네요? (실제로 코드를 이렇게 씀)
자 그러면 something이 뭐죠?
이제 문제가 좀 더 간단해졌네요
long aiRating = ??; 라고 위에 쓰고
aiRating을 구해내보죠.
계속해서
return 해야 하는 값을 쪼개나가는겁니다. 수학하듯이요.
그리고나서
자 데이터는 공간에서 공간으로 흐릅니다.
이 데이터는 어디에 저장되어있습니까?
네 데이터의 근원지가 rl 이죠?
자 그러면 점점 가공해봅시다
=> 가공 => 가공
자. 됐죠?
이런식으로 코드를 작성하면
어떤 일이 벌어지냐면
코드를 짤때 막힘없이
자꾸 등호를 쓰게 됨.
함수 중괄호를 열자마자 return 을 넣게 되고
return에서 필요한 값이 있으면 위쪽으로 빼내서 가독성을 증가시키면서 목표를 확실히하고
위쪽으로 빼낸 값은 다시 또 등호 = 를 바로 도입하면서, 어디에서 가져오죠?
또 가져올때 핵심 키워드가 되는게 있으면 앞쪽으로 빼서 등호를 적용함.
이게 뭐냐면, 결국 값에 주목하는거고 값의 흐름에 주목하는거임.
부작용을 기반으로
코드 한줄짜고, 그 다음 한줄짜고, 하나하나 데이터를 이동시켜나가는 코딩방법이 아니라
자 나는 무엇이 필요한가
등호 쓰고보고
어디에서 가져오는가
또 무엇이 필요한가
필요한 데이터가 있을때마다 위쪽에 선언하는 방식인거임.
그러다보니, 인턴이 내가 코드짜는거 첨 보고 놀랐던게
아니 뭐에요 벌써 코드 다짜셨어요? 왜 시작부터 return을 하시는거에요? 하고 놀라더라고
이게 어? 등호한번 쓰고 진짜로 완결시킬수 있어? 하고 보면 진짜로 그렇게 됨.
저기 aiRating 에 등호쓰고 결국 등호하나로 한줄코드로 마무리짓잖아.
일부러 한줄로 쓰려는게 아니라, 그냥 코드 짜다보면 자연스럽게 어쩌다보니 한줄코드가 됨.
물론, 모든게 이렇게 순수함수적이지는 않음. 이 방식은 부작용으로 가져와야하는 데이터 가져온다음에 순수함수로 가공하는 매우 매우 쉬운단계임 근데 인턴들 다뤄본 결과, 순수함수를 다루는걸 정말 정말 못하고 리스트 안에 리스트가 들어있고, 그 안에 객체가 들어있고 이런식으로 되어있으면 그냥 순수함수 자체를 못다루더라고
글구 예시코드 정말 더러운데, 맨 아래쪽 스트림코드만 보셈. 내가 짠 코드 아님. 진짜 난장판이던데 내가 바빠서 건드리지 않았음
글쎄, 내가 보기엔 영 지루한데? 킥이 없어 코드에 "킥"이
후후후...
그 방식이 매력이 있긴 한데 자바 잘하는 사람들이 즐겨짜는 방식은 아니지 않나? 이상하게 언어 또는 분야마다 문화가 있는 것 같아 이쪽 사람들은 이렇게 짜는게 취향인 것 같고, 저쪽 사람들은 저렇게 짜는게 취향인 것 같다고 느끼는데 나만 그렇게 느끼나 그 취향과 다르게 짜도 이론적으로는 문제될거 전혀 없을지라도, 취향에 맞게짜게되는 그런게 나는 있었어
ㅇㅇㅇ 어디까지나 하스켈을 하면서 자바에 영향을 끼친것에 불과함. 이 방법도 스트림 쓸때나 의미있고 스트림 쓰는것도 결국 DTO 조작하는 순수함수에서만 의미있는거같음
그러니까 네가 기존 사용자가 존나 이해하기 어렵고 복잡한 코드를 짠 다음에 네가 대단하다고 생각하는거지?
ㅋㅋㅋㅋㅋㅋㅋ
팀에 없었으면 좋겠노 ㅋㅋ
그..형 나도 옛날에는 개발을 남들이 이해못하는 방식으로 짜는게 존나 대단한건줄 알았는데 제일 대단한건 존나 어려운거를 초딩도 보면 이해하게 만드는게 대단한거더라
원래 자기가 알고있는걸 남이 이해하기 쉽게 만드는게 대단한거임
자바를 왜 함수형으로 쓰는거야 그냥 순차적으로 존나 길게 써야지 ㅋ 함수형 하려면 스칼라 코틀린 하던가
멀말하고싶은지 모르겟음
무슨 소리임...? 뭔말하는지를 모르겟음 - dc App
하스켈은 언제쯤 성공 사례가 나올까 - dc App
궁금한게 이렇게 대단한사람이 왜 념글주작함??