puppet-xp
puppet-xp copied to clipboard
模块化和TS
- 将init-agent-script.js使用ts编写。
- 在src目录下,新建了agent/index.ts为原agent代码。
- 将原agent代码模块化到src平级的module目录下,进行不同模块不同管理, 模块里的文件均以index.ts为出口文件。
此 issue 关联代码: https://github.com/Caesar-ch/puppet-xp/tree/master-dev
代码有以下问题:
- 代码满屏红线,要把 module 目录的代码都移到 agent 目录下
- 代码格式不统一,建议使用 Prettier 这个vscode 插件对代码格式化(仅格式化 agent 部分)。否则乱糟糟的代码,不利于阅读,你不会想看的
- 不需要所有的代码都需要导出到 agent/index 中,仅在这里导出必要的东西,即
wechat-sidecar.ts中 agentTarget 中声明的函数 - 你没有理解 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 个函数就是不必要的重复,需要精简
需要解决的问题:
- 不能出现红线,出红线是提示你代码有错误。如果忽略这些,那用 ts 和用 js 没什么区别,反而满屏红线会让人想远离这些代码
- 合理拆分,要按功能逻辑来拆分。
- 例如依赖 offset 的函数,是可能会仅在某个程序版本中才有效的,换个版本就得修正,这种就要避免和真正的功能方法(如
readString)放一起。
- 例如依赖 offset 的函数,是可能会仅在某个程序版本中才有效的,换个版本就得修正,这种就要避免和真正的功能方法(如
This is very cool. When can we see the released version?We are looking forward to it.