-
Notifications
You must be signed in to change notification settings - Fork 350
Open
Labels
Description
内容
IpcMainHandleやWindowManagerの責務分離とシングルトンパターンへの統一を行いたい。
背景
PR #2866 でWelcome画面が導入された際、IpcMainHandleやWindowManagerの設計に一貫性のない部分が生じた。
現状の問題点
-
windowManagerの取得方法が不統一
- 循環参照の問題で、各関数の下で毎回getされるようになった
- 他の依存関係はファイル上部で定義されている
-
appStateControllerのインスタンス取得が不統一
- 外でインスタンス持ってきたほうが統一感がある
-
ipcのregister登録の責務が不適切
- Windowを管理するクラスが直接実行している
- 責務をAppStateControllerか、しかるべきクラスに持たせるべき
-
IpcMainHandleだけDI方式
- 他はシングルトンインスタンスをgetして使うパターン
- 柔軟性を考えるとインスタンスをgetする形のが取り回しやすい
-
welcomeIpcMainHandleもシングルトン化すべき
ref: #2866 (comment)
ref: #2866 (comment)
ref: #2866 (comment)
ref: #2866 (comment)
ref: #2866 (comment)
Pros 良くなる点
- コードの一貫性が向上する
- 責務が明確になり、保守性が向上する
Cons 悪くなる点
- 変更行数が多くなる可能性がある
実現方法
- IpcMainHandleをシングルトンインスタンスにする
- registerIpcHandleをそのクラスに定義する
- staticDirPath、appDirPath、initialFilePathはAppStateControllerが管理して返すようにする
VOICEVOXのバージョン
mainブランチ
その他
(参考)変更対象ファイル:
src/backend/electron/ipcMainHandle.tssrc/backend/electron/manager/windowManager/main.tssrc/backend/electron/welcomeIpcMainHandle.tssrc/backend/electron/appStateController.ts
Reactions are currently unavailable