docs: 补充JSON序列化选型规范、ViewModel规则及项目目录结构
This commit is contained in:
28
AGENTS.md
28
AGENTS.md
@@ -180,6 +180,34 @@
|
||||
- 签名文件与密码通过 `config.gradle` / CI 环境变量注入,不进版本库。
|
||||
- 客户端凭据一律加密存储(Android: security-crypto;Flutter: secure_storage;iOS: Keychain)。
|
||||
|
||||
### JSON / 序列化库选型规范
|
||||
- **禁止使用 fastjson**。
|
||||
- 各平台按以下原则选型:
|
||||
|
||||
| 平台 / 语言 | 推荐库 | 备选 |
|
||||
|---|---|---|
|
||||
| Spring Boot(Java) | **Jackson**(`spring-boot-starter-web` 已内置) | — |
|
||||
| Android(Java) | **Gson** | Jackson(体积稍大但功能更强) |
|
||||
| Android(Kotlin) | **kotlinx.serialization** | Moshi(已有技术积累的项目可沿用) |
|
||||
| 纯后端 Kotlin(非 Spring Boot) | **kotlinx.serialization** | Jackson |
|
||||
| iOS(Swift) | **Codable**(系统原生) | — |
|
||||
| Flutter(Dart) | **json_annotation + json_serializable + freezed** | — |
|
||||
|
||||
- **例外流程**:若因第三方依赖必须使用其他库,需提交技术评审并锁定版本、开启安全扫描。
|
||||
|
||||
### ViewModel 规则
|
||||
* **绝不持有 Context**:ViewModel 中**严格禁止**持有 `Context`、`Activity`、`Fragment` 或 `View` 的引用。若需要 `Application Context`,请继承 `AndroidViewModel`(但优先推荐使用 Hilt 注入所需依赖)。
|
||||
* **数据暴露规范**:
|
||||
* 对外只暴露不可变的 `LiveData<T>`。
|
||||
* 内部维护私有的 `MutableLiveData<T>`。
|
||||
* 示例:
|
||||
```java
|
||||
private final MutableLiveData<UserUiState> _uiState = new MutableLiveData<>();
|
||||
public LiveData<UserUiState> getUiState() {
|
||||
return _uiState;
|
||||
}
|
||||
```
|
||||
|
||||
### 代码修改
|
||||
- 优先做**最小化定向修改**,不要对既有大文件做整体重写或重构。
|
||||
- 修改前先读取文件当前内容,避免基于陈旧上下文编辑。
|
||||
|
||||
Reference in New Issue
Block a user