ONE-vscode icon indicating copy to clipboard operation
ONE-vscode copied to clipboard

[Backend] Introduce BackendManager

Open dayo09 opened this issue 2 years ago • 2 comments

What?

Let's introduce BackendManager.

Why?

Currently, we provide multiple backend registration. However, we don't provide a class to put them together. Instead, there are some global set/map variables which are declared in Backend/Backend.ts.

POINT Remove global variables. It may be unsafe to use global variable from an extension as we don't know how it is treated after the extension's disabled.

dayo09 avatar Jul 15 '22 13:07 dayo09

related articles:

  • https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil/148154#148154
  • https://stackoverflow.com/questions/10525582/why-are-global-variables-considered-bad-practice

hyunsik-yoon avatar Jul 18 '22 02:07 hyunsik-yoon

Restructuring Plan

gToolchainEnvMap (Toolchain/ToolchainEnv.ts) -> private toolchainEnvMap; globalBackendMap (Backend/API.ts) -> private backendMap; globalExecutorArray (Backend/API.ts) -> private executors; (TO CHECK: can be removed?)


interface BackendMap {
  [key: string]: Backend;
}

// List of backend extensions registered
let globalBackendMap: BackendMap = {};
// List of Executor extensions registered
let globalExecutorArray: Executor[] = [];
....

export interface ToolchainEnvMap {
  [key: string]: ToolchainEnv;
}

// List of compile environments
let gToolchainEnvMap: ToolchainEnvMap = {};

dayo09 avatar Aug 09 '22 07:08 dayo09