Neovim의 vim 전역 API 지도 — vim.api vs vim.fn, 옵션·매핑·커맨드
플러그인 Lua 코드에 나오는 vim.* 가 대체 뭔지 한 장으로. 옵션 4갈래(o/opt/bo/wo/g), vim.api와 vim.fn의 갈림길, 키매핑·커맨드·오토커맨드·유틸·스케줄링까지.
플러그인 Lua 코드에 나오는 vim.* 가 대체 뭔지 한 장으로. 옵션 4갈래(o/opt/bo/wo/g), vim.api와 vim.fn의 갈림길, 키매핑·커맨드·오토커맨드·유틸·스케줄링까지.
객체의 내부 상태를 캡슐화를 깨지 않고 스냅샷으로 저장했다가 나중에 되돌리는 패턴. 요청을 캡슐화하는 Command와 조합해 undo를 구현하는 경계까지 비교한다.
Bridge·Flyweight·Interpreter를 한 곳에 모아, 언제 패턴 이름이 선명하게 드러나는지와 현대 코드에서 어떤 형태로 남아 있는지 짚는다.
객체 구조는 그대로 두고, 그 위에서 수행할 연산을 별도 Visitor로 분리하는 패턴. 새 연산을 추가할 때마다 모든 클래스를 고치는 일을 막는다.
객체들이 서로를 직접 참조하지 않고 중재자를 통해서만 소통하게 만드는 패턴. 다대다로 얽힌 의존을 중재자 하나로 모아 결합을 푼다.
이미 만들어진 객체를 복제해 새 객체를 얻는 패턴. 생성 비용이 크거나 구체 타입을 모른 채 같은 종류를 찍어내야 할 때, new 대신 clone()을 부른다.
lazy.nvim의 플러그인 spec을 읽고 쓸 때 만나는 필드들 — lazy·keys·cmd·ft·priority(언제 로드), init·opts·config(로드 시 동작), dependencies·optional·branch(관계) — 를 실행 순서와 함께 정리한다. opts의 테이블 vs 함수 차이와 흔한 함정 포함.
GoF 23개 패턴을 생성·구조·행위 세 갈래로 나누고 난이도와 비교하기 좋은 추천 순서를 표시한 학습 지도. 자주 헷갈리는 쌍은 구현 모양이 아니라 의도로 구분하고, 특정 문제에서 선명한 패턴은 부록으로 묶었다.
한 클래스의 인스턴스를 단 하나만 보장하고 전역 접근점을 제공하는 패턴. 자주 쓰이지만 안티패턴 비판도 많아 DI 대안과 함께 봐야 한다.
컬렉션 내부 구조를 노출하지 않고 원소를 순서대로 꺼내는 방법을 제공하는 패턴. 현대 언어는 거의 내장하고 있다.