Roll20 매크로에서 내가 template overriding이라는 테크닉을 써서
if문 비스무리한 걸 구현해 놨기 때문에,
평범하게 코드를 순차적으로 읽을 수도 없고,
필연적으로 'template의 이 행이 출력될지 아닐지 확인하는 값'은
표보다 아래에 있을 수밖에 없음.
예전에는 애당초 개행이 불가능했다 보니, 표 중간중간에 계산식을 넣으면 정말 너무 난잡해 보이고
제작 단계에서 귀찮음이 너무 크다 보니까
구체적인 계산 로직들을 표 맨 아래에 몰아넣는 방식으로 구현을 했었거든?
그런데 이제 뭔가 좀 (외형만) 프로그래밍 언어처럼 만들 수 있게 되다 보니까,
이 방식을 고수할지 다시 한 번 검토를 해 봐야 할 거 같음...
만약 출력할 줄과, 그 줄의 출력 여부를 판단하는 식을 나란히 붙여놓으면
이런 구조의 반복이 될 거임.
장점이라면 역시, '이 계산식이 어느 줄을 출력하는지를 판별하는지'를
되게 직관적으로 볼 수 있다는 점이겠지.
단점이라면... 역시 구조를 또 다시 다 뜯어고쳐야 한다는 귀찮음이 제일 크고;;
그 외에도, 솔직히 이게 나중에 코드 흐름을 보는 입장이라면 모를까,
코드를 작성하는 도중에는 중간에 저 긴 버튼이나 굴림 결과 설명이 읽는 데 방해밖에 더 안 되거든.
이게 사실 정상적인 프로그래밍 언어라면 저렇게 긴 출력은 그냥 변수 하나에 할당해 놓고
마지막에 return 변수; 이렇게 하는 게 정상이자녀...
그래서 오히려 나한테는 직관적이었다는 느낌인데.
그래서, 가능하다면 이렇게 표 부분과 계산 부분을 분리해 두고 싶다... 는 게 본심이긴 한데.
다만 여기서 걱정되는 건, 내가 이게 index를 최소화하려는 일종의 최적화 과정에서
필연적으로 표가 계산 중간에 끼어들어야만 하는 지점이 몇 개 있긴 하단 말임...
예전에는 어차피 다 한 줄이었으니까 조금 규칙이 깨졌거니 하고 말았을 거 같은데,
이제 매크로 전체의 길이가 어마어마하게 늘어났다 보니까...
이런 게 좀 심하게 눈에 띄지 않을까 걱정되는 점이 있다.
그리고 또 하나, 방금 뜬금없이 든 생각인데,
이게 index를 참고하는 식으로 inline roll끼리 값을 전달하려면,
필연적으로 각각의 roll들은 아래에서 위로만 참조가 가능하단 말임???
그래서 서로 값을 참조하는 inline roll을 구성하면
어쩔 수 없이 코드가 역순이 되고,
기존 매크로는 그래서 코드를 읽어내리던 도중 갑자기 index가 풀쩍 점프하는 게 보이면
한참을 내려가서 index를 확인하고 거기서부터 역순으로 다시 올라가는 것을 반복하는... 그런 구조였는데.
그래서, '아예 index를 포함한 계산은 전체를 역순으로 읽어나가는 걸
전제로 하도록 코드를 짜면 어떨까' 하는 생각도 든단 말임...
index 참조 전에 순행으로 코드를 읽어나가면서 index를 사용하지 않는 roll을 전부 계산하고
-> index manipulation을 포함한 index 참조 계산들을 아래에서부터 위로 계산해 나간 다음
-> template overriding을 위에서 아래로 덮어써 가면서 처리
하는 방식으로 생각하면 어떨까... 했는데
이게 결국 최종적으로 계산이 진행되는 inline roll 하나 단위로는 또 계산이 순차적으로 진행되니까
'아래에서 위로 읽는' 순이 되어도, 눈이 왔다갔다 하는 거 자체는 어쩔 수 없지 않나,
차라리 지금 하는 것처럼 코드를 읽어내려가면서 다음 index를 찾고
그 과정에서 처리 안 된 roll들을 자기 머릿속에 기억하고 있다가
역순으로 처리하게 하는 게 오히려 더 편하지 않나... 하는 생각도 들고 그런다;;
글고 마찬가지로 다 뜯어고치기 귀찮다는 생각도 들고... ㅎㅎ;;
자꾸 갤에 저녁메뉴도 아니고
되게 요상한 걸 자꾸 물어보고 있다는 자각이 있긴 하다만서도...
이번에 대대적인 리팩토링을 할 생각이라,
이걸 좀 확실히 정하고 가야 할 거 같아서
별걸 다 물어보고 다니는 점 이해해 주면 고맙겠음.
좋은 의견 부탁드립니다.
Roll20 프리 버전으로 쓰려는 사람 중에 매크로 코드 보고 수정까지 하면서 쓰려는 사람은 드물듯. 그냥 니가 편한대로 해
커스터마이징할 의지가 있는 사람은 roll20 프로 버전 쓰거나 fvtt로 넘어갔을듯
ㅋㅋ 일반적이지 않은 형태로 구현하는 순간부터 가독성은 챙길수 없는 상태이기 때문에 그냥 님 편한대로 하면됨. - dc App
걍 fvtt 쓰셈