| name | ngaq-code-review-frontend |
| description | 審查C#代碼(前端專用) |
通用規範
先自己看一遍 skill/ngaq-code-review。 如果你無法訪問skill 就手動翻閱 .agents/skills/ngaq-code-review/SKILL.typ
前端規範
- 如果你當前檢查的代碼不是前端代碼則無需理會此章節。
- 如果是前端代碼但你無法訪問後面提及的參考文檔 則應向我匯報
使用Tsinswreng.AvlnTool下的寫法。參見 /Doc/Spec/Frontend.typ。
示例: Ngaq.Frontend/proj/Ngaq.Ui/CodeTemplate/Sample/ViewSample.cs Ngaq.Frontend/proj/Ngaq.Ui/CodeTemplate/Sample/VmSample.cs
I18n
項目要求I18n。禁止硬編碼文字。 快速實現時臨時硬編碼則需先打I18n標記。
錯誤示例
btn.Content="Login"
正確示例:
btn.Content=Todo.I18n("Login")
下拉框 等 也要I18n、除非數據源是從後端獲取
MVVM
遵守MVVM模式。
- 不能在Vm層操作View層的任何東西 包括控件/ 做頁面跳轉 等
UI寫法
ViewModel寫法
按鈕綁定耗時任務(如調用後端異步或同步接口)
- 用
await Task.Run(async()=>{})
- 更新UI要
Dispacher.UIThread.Post(()=>{})
- 記得try catch
具體 看 VmSample.cs
View層初始化規範
- 只在View的構造函數中 做 UI初始化相關操作(包含 初始化
this.Content, 初始化this.Ctx, 初始化this.Styles)、除此之外 一般不應該在構造函數中做其他事。
- 如果希望在進入界面的時候做一些其他的初始化操作 如調用接口獲取數據/耗時操作 等、應放在
this.Loaded回調中。
文件位置
不能在同一文件夾下放置多個不同的View和Vm
當代碼不符合上述規範時如何處理
默認情況下、直接把代碼中不符合規範的內容報告給用戶、不需要自行修改代碼。
如果用戶已經要求你自行迭代修改代碼 那就自行修改。改完一版之後再讀此文件對照評審。