Sayakie/Hakase

Hakase Refactoring Roadmap

Closed this issue · 1 comments

Roadmap Preview

디스코드 Basixlounge 서버에서 받은 코드 리뷰를 토대로 리팩토링 로드맵을 작성했습니다.
아래의 코드를 전부 리팩토링하는 것이 이 로드맵의 최종 목표입니다.

  • 누락된 return 추가하기
    [File]: PokemonUtil.ts#L151

  • PokemonUtil.ts에서 반복되는 importing 작업을 초기화 페이즈만을 담당하는 다른 파일로 옮기기
    [Files]: PokemonUtil.ts#L12-#L58

  • 인스턴스화를 방지하기 위해 클래스에 null을 확장하는 것을 걷어내기
    [Benefits]: UB에 준하는 동작을 미리 걷어냄으로써 미래에 야기될 수 있는 문제를 방지합니다.
    [Drawbacks]: 타입스크립트를 컴파일한 뒤 런타임에서 클래스를 인스턴스화 할 수 있습니다.
    [Files]: ArrayUtil.ts#L5 / Util.ts#L871 / PokemonUtil.ts#L101
    [Reference]: tc39/ecma262#1321

  • 조사(은는이가)를 구하는 함수를 문자열 헬퍼 함수를 제공하는 StringUtil.ts 파일에 따로 분리시키기
    [File]: PokemonUtil.ts#L73-#L99

  • 타입 단언한 코드들을 타입 추론으로 옮기기
    [Benefits]: 타입을 명시하는 의미가 더 명확해집니다.

=== Example)
- const dropItemLengthOrder = {} as { [P in Extract<keyof PokeDrop, `${string}data`>]: number }
+ const dropItemLengthOrder: { [P in Extract<keyof PokeDrop, `${string}data`>]: number } = {}

충분히 리팩토링이 이루어져 이슈를 닫습니다.