버그 없어야하고 실제 솔루션에서 문제없이 돌아가는 정도로 구현해야하는 수준으로 ㅇㅇ
UndoRedo 구현 난이도 어느정도임?
익명(218.152)
2022-04-21 07:06
추천 0
댓글 15
다른 게시글
-
나는내향적이야 [3]손발이시립..(sonbariuos) | 22.04.21추천 0
-
내가 10대땐 인생을 바꿀 기회가 있었을텐데 그땐 몰랐어ㅜㅜ [5]익명(223.38) | 22.04.21추천 0
-
파블로 피카소익명(175.223) | 22.04.21추천 0
-
Si 라는게 정확히 뭐냐? [4]익명(221.154) | 22.04.21추천 0
-
코딩은 존나 재밌는데 문제가 뭐냐면 [1]흑두갈보(223.39) | 22.04.21추천 0
-
곧 이력서 낼건데 날 떨어뜨리는 회사들흑두갈보(223.39) | 22.04.21추천 0
-
나 좀 취업시켜줘 ㅅㅂ흑두갈보(223.39) | 22.04.21추천 0
-
중소기업 사장새끼는 내가 짠 플랜대로 프로젝트 진행시키면흑두갈보(223.39) | 22.04.21추천 0
-
삼국지보면 유비가 삼고초려해서 갈량이 데려오던데흑두갈보(223.39) | 22.04.21추천 0
-
빨리 내 게임 만들고싶음 ㅇㅇ흑두갈보(223.39) | 22.04.21추천 0
걍 커맨드 패턴이면 간단하게나마 구현 가능함. 문제는 동작하는데 시간이 오래 걸리는 연산이 있으면 최적화에 있어서 특정 구간마다 스냅샷을 뜨고 요걸 체크포인트 삼아서 처리하는게 중요하지. 그리고 데이터무결성 문제인데 다수가 동일 소스를 건들이는 경우는 머리 깨지게 좀 복잡해지긴 할텐데 나도 거기까진 안해봐서 - dc App
심각하게 어려운듯하다
구현따라 다른거임. 막 언두했다가 작업하고 이걸 다시 언두하고 리두하고 막 섞어 재끼는것까지 하는게 아니라 간단하게 그냥 언두/리두 작업이 오래 걸리지 않고 언두 이후에 다시 뭔가 작업을 하면 히스토리를 다 날리는 형태로 구현해도 되면 커맨드 패턴만 알면 걍 거저먹는거임
여기서 말한 무결성이란 예를들어 다수의 사용자가 동시에 수정작업을 했을때 히스토리를 어떻게 적용하냐인데 diff로 안됨여. 뭔 diff로 걍 은탄환처럼 얘기하는데 절대 그럴 수 없다.
걍 체크포인트용 스냅샷 같은거 뜰때 스냅샷의 종류가 diff로 뜰 수 있는 요소인가? 여부에 따라서 그런데 드는 노가다를 좀 줄일 수 있을려나?
diff로 무결성이 유지된다면 왜 소스저장소같은 단순 텍스트에서도 confliction이 발생하겠음? 거기에 히스토리 시스템에서 사용자가 그거 보고 머지해주는게 가당키나 함?
내가 지금 왜 난감한 상황이냐면 단일 객체에 대한 UndoRedo가 아니라 여러 객체를 묶어서 작업하는 UndoRedo를 구현해야 되는 상황이거든; 이걸 내가 할수 있을지 모르겠네 ㅋㅋ
사용자가 UI(PropertyGrid)에서 값을 편집할때 History를 기록해야하는데 이걸 구현하려면 컴포넌트쪽 코드를 손봐야 할거 같은데 미칠것같음
그것도 마찬가지임 각각 커맨드에 대해서 커맨드그룹을 만들어서 히스토리스택에 쌓으면 됨 - dc App
그리고 문서 닫을때 저장 안하는 경우엔 Rollback / Rollforward도 해야하고..;; 씨발
그러니까 커맨드그룹도 일종의 커맨드 패턴이야 동일 인터페이스로 넣고 구현하면 됨. - dc App
그게 아까 말한 스냅샷을 이용한 체크포인튼데 어차피 열때 해당 스테이트 저장해놨다가 그런 경우는 그대로 보내버리면 히스토리 스택을 쓸 필요도 없음 - dc App
말이야 쉽지 ㅋㅋㅋ 구현해야할 양이 너무 많다는거임 프로퍼티가 한두개도 아니고 씨발거 ㅠㅠ
별별거 구현다해봤는데 다른 피쳐 구현이 어렵지 너님 스펙대로면 넘 겁낼 필요없음. 내가 알려준 링크들 함씩 싹 보셈. 화이팅 - dc App
https://betterprogramming.pub/utilizing-the-command-pattern-to-support-undo-redo-and-history-of-operations-b28fa9d58910
이런거 보면 걍 걱정 안해도 됨. 엄청 복잡한거같으면 아예 외부 라이브러리 구현된 것도 많음.
https://github.com/ValeriusGC/jundo
이런거. 어째튼 커맨드패턴은 기본적으로 깔고 가야하니까
https://refactoring.guru/design-patterns/command
이런건 읽어두자