with one click
tsinswreng-separate-decl-and-impl
聲明與實現分離。編碼階段初步設計與詳細實現時必須閱讀此skill
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
聲明與實現分離。編碼階段初步設計與詳細實現時必須閱讀此skill
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | tsinswreng-separate-decl-and-impl |
| description | 聲明與實現分離。編碼階段初步設計與詳細實現時必須閱讀此skill |
當你需要調用已有代碼的API時、大部分情況下你只需要關注函數聲明 不需要關心內部具體實現 以節約token。
有兩種情況、一種是基于接口實現; 另一種是基于partial關鍵字實現(類似于C語言的頭文件);
優先閱讀接口中的代碼。通過依賴注入系統使用接口。通常不需要閱讀具體實現。
約定:
訪問Xxx中的API時 優先閱讀*.Decl.cs。
也可能有.Decl省略不寫的情況、即 Xxx.cs vs Xxx.Impl.cs的情況
新寫的代碼也要遵從聲明與實現分離的規範、先寫聲明、等用戶確認聲明無誤後再實現。 當使用 聲明與實現分離的模式時、聲明部分的文件寫在 Xxx.cs(記得.Decl默認省略!)、有一點類似C語言的頭文件但不完全一樣;
函數實現部分的文件寫在 Xxx.Impl.cs。
Xxx.Impl.cs中只放函數實現。
如果已經採用了接口(interface)+實現類(class)的模式、則不需要再使用partial關鍵字拆分聲明與實現。
例:
TextWithStream.csDecl中、函數聲明中用partial關鍵字、不提供函數實現。
public partial class TextWithStream{
public u64 HeaderBytesLen{get;set;}
public string Text {get;set;}
public Stream Payload {get;set;}
public partial TextWithStream();
public static partial Task<TextWithStream> Unpack(Stream stream, CT Ct);
}
TextWithStream.Impl.csImpl.cs中 只給出函數實現 別的不寫
public partial class TextWithStream{
public partial TextWithStream() {
HeaderBytesLen = 0;
Text = "";
Payload = Stream.Null;
}
public static async partial Task<TextWithStream> Unpack(Stream stream, CT Ct) {
if(stream is null) {
throw new ArgumentNullException(nameof(stream));
}
//...中略
return R;
}
}
再強調幾點:
Avalime項目的文檔。開發Avalime項目時必須閱讀此skill
AI的持久化記憶。此skill爲必讀。執行任務前先看記憶、執行任務後再按需更新記憶
在需求分析之後 編碼實現之前 閱讀此skill
需求分析skill。默認情況下、你應當先做需求分析 再設計實現。除非用戶明確要求你不用分析
遇到疑問時立即停止工作並與用戶確認。此skill爲必讀
寫代碼一定要有註釋。寫代碼寫註釋時使用此skill