250812

lililllilillll·2025년 8월 12일

개발 일지

목록 보기
261/350

✅ 한 것들


  • 클린 아키텍처
  • Project GNC
  • R&D : Neovim


📖 클린 아키텍처


10장 ISP: 인터페이스 분리 원칙

서로 다른 사용자가 같은 클래스의 서로 다른 메서드에 의존한다고 할 때,
메서드 하나를 변경하면 그에 의존하지 않는 사용자들도 다시 컴파일하게 됨.
이때 의존하는 메서드들을 인터페이스로 나눠버리면
의존하고 있는 메서드를 바꿨을 때만 다시 컴파일되고 재배포됨.

정적 타입 언어는 소스 코드에 포함된 included 선언문으로 인해 의존성이 발생한다.
루비나 파이썬 같은 동적 타입 언어에서는 소스 코드에 이러한 선언문이 존재하지 않는다.
대신 런타임에 추론이 발생하기 때문에, 의존성도 없고, 재컴파일과 재배포도 필요없다.

자바, C# 등은 late binding으로 private이 아닌 객체는 시그니처를 변경하면 의존하는 코드만,
구현 코드만 변경됐다면 그것도 재컴파일 필요 없어짐.
즉, ISP는 언어 종류에 따라 영향받는 정도가 다름.

아키텍처 수준에서도 ISP는 중요하다.
필요 이상으로 많은 걸 포함하는 모듈에 의존하는 건 해로운 일이다.
의존하던 프레임워크의 불필요한 기능 때문에 문제가 발생하거나 재배포를 해야 할 수도 있기 때문.

11장 DIP: 의존성 역전 원칙

유연성이 극대화된 시스템이란,
소스 코드 의존성이 추상에 의존하며 구체에는 의존하지 않는 시스템.

규칙이라고 보기는 현실적이지 않다.
하지만 변동성이 큰 구체적 요소는 의존하지 않도록 해야 한다.
그것은 열심히 개발 중이라 자주 변경되는 모듈들을 의미한다.

인터페이스는 변동성이 낮아야 한다.
가급적 인터페이스를 변경하지 않고도 구현체에 기능을 추가하도록 노력해야 한다.

구체적 실천법

  • 변동성이 큰 구체 클래스를 참조하지 말고, 추상 인터페이스를 참조하라.
  • 변동성이 큰 구체 클래스로부터 파생하지 마라. 상속은 아주 신중하게 사용해라.
  • 구체 함수를 오버라이드 하지 마라. 의존성도 상속받게 되기 때문.
  • 구체적이며 변동성이 크다면 절대로 그 이름을 언급하지 말라.

구체적 의존성을 완전히 없애는 건 불가능하다.
팩토리를 쓴다거나 해서 줄일 순 있다.



🎮 Project GNC


깃허브 레포 등록

creator kit fps 코드 보고 배우기

  • static List를 가진 monobehaviour를 붙여놓고 OnEnable과 OnDisable에 add, remove를 하면 굳이 관리자 객체에서 생성할 필요없이 추적 가능 : 링크
  • static 변수 앞에는 s, 멤버 변수 앞에는 m, 외부 노출은 반드시 프로퍼티, 프로퍼티는 대문자로 시작
    • 나중에 공식 컨벤션 보는게 더 표준적이고 좋을듯
  • 해당 클래스를 사용하려면 반드시 필요한 struct는 굳이 따로 빼서 선언하지 않고 클래스 안에 선언

god 시점 구현
god controller 시점 변환 디버그 코드

  • rotate 스크립트만 껐는데 controller가 하늘을 허우적대는 버그 발생
  • 기존 rotate 스크립트에서 각도를 고정시켜주고 있었는데, cc.Move()로 인해 각도가 조금씩 틀어지면 그걸 붙잡아주질 못함
  • update에 godmode 플래그 걸고 억지로 각도 리셋해서 해결



🛠️ R&D


Neovim

https://www.youtube.com/watch?v=w7i4amO_zaE

  • window에선 config 폴더를 뭐로 대체? : C:\Users\사용자명\AppData\Local
  • nvim 대신 vim으로 초기 세팅하길래 vim 깔았는데 환경 변수? : vim.exe가 있는 위치를 path(환경변수)에 추가
  • %로 새로운 파일을 만들라고 함 : 순정 vim에서는 안되는거 맞고, netrw라는 걸 추가로 설치해야 함
  • ??? from scratch래매? 처음 1분 동안 제대로 설명도 안 해주는거 일단 따라갔는데, 전제 자체가 tutorial이 아닌 것 같아서 다른 거 찾아보기.


profile
너 정말 **핵심**을 찔렀어

0개의 댓글