puppet-xp icon indicating copy to clipboard operation
puppet-xp copied to clipboard

模块化和TS

Open Caesar-ch opened this issue 3 years ago • 2 comments

  1. 将init-agent-script.js使用ts编写。
  2. 在src目录下,新建了agent/index.ts为原agent代码。
  3. 将原agent代码模块化到src平级的module目录下,进行不同模块不同管理, 模块里的文件均以index.ts为出口文件。

Caesar-ch avatar Sep 29 '22 01:09 Caesar-ch

此 issue 关联代码: https://github.com/Caesar-ch/puppet-xp/tree/master-dev

代码有以下问题:

  1. 代码满屏红线,要把 module 目录的代码都移到 agent 目录下
  2. 代码格式不统一,建议使用 Prettier 这个vscode 插件对代码格式化(仅格式化 agent 部分)。否则乱糟糟的代码,不利于阅读,你不会想看的
  3. 不需要所有的代码都需要导出到 agent/index 中,仅在这里导出必要的东西,即 wechat-sidecar.ts 中 agentTarget 中声明的函数
  4. 你没有理解 agent 中代码的含义,目前仅仅是将这些代码粗略的分类拆分到不同的模块中,但本质上没有改变。
  • 仍然有变量在错误的位置,会造成内存占用
  • 代码拆分不合理,例如
    • data-offset.ts 中应当只是 偏移地址的常量信息,但怎么会变量也放这里呢?当做全局数据存储来用了,这不合理
    • hookLogin 和 hookLogout 是登录状态相关的,怎么会放到 version-hook
    • 全局变量应当放一个全局对象中,而不是将各个变量本身改为 {data: any} 的方式
      • 例如改为 const globalData = { currentVersion:number =0 , loggedIn: boolean = false } 这样的方式是不是更好呢?
  • 单词拼写错误
    • currentVersion.date 这个应该是 data 而不是 date
  • 代码中的一些冗余没有处理,例如 initmsgStruct / initidStruct / initAtMsgStruct 这几个本质上是 readString 反过来,即将指定的字符串写入到内存,成为一个 std::string 数据结构。写成 3 个函数就是不必要的重复,需要精简

需要解决的问题:

  1. 不能出现红线,出红线是提示你代码有错误。如果忽略这些,那用 ts 和用 js 没什么区别,反而满屏红线会让人想远离这些代码
  2. 合理拆分,要按功能逻辑来拆分。
    • 例如依赖 offset 的函数,是可能会仅在某个程序版本中才有效的,换个版本就得修正,这种就要避免和真正的功能方法(如 readString )放一起。

binsee avatar Sep 29 '22 02:09 binsee

This is very cool. When can we see the released version?We are looking forward to it.

choogoo avatar Nov 18 '22 08:11 choogoo