关于代码规范
AlisaAkiron opened this issue · 10 comments
无意中发现了这个项目,正好准备整个bot(
提供几个意见:
- 添加
.editorconfig
用于规范格式化
示例(.NET 编译器官方仓库):https://github.com/dotnet/roslyn/blob/main/.editorconfig
- 作为一个 Library,我认为 TFM 仅 netstandard 2.0 或者 netstandard 2.1 就足够了
EleCho.GoCqHttpSdk.MessageMatching
引用EleCho.GoCqHttpSdk
项目而不是 Nuget 包- 拆除
csproj
里面的一些东西放到Directory.build.props
里面去 - 把项目放到
src
目录,测试或者示例项目放到demo
目录 - Nuget Central Package Management
- 规范 commit message
毛遂自荐一下几个自己搞得东西,仅供参考:
https://github.com/LiamSho/Dodo.Hosted
https://github.com/MaaAssistantArknights/MaaCopilotServer
https://gitea.alisaqaq.moe/Alisa/RconCli
如果引用项目的话, 那么在安装 EleCho.GoCqHttpSdk.MessageMatching 的时候, 还会自动安装 EleCho.GoCqHttpSdk 吗
OK, 目录整理完毕, .editorconfig 也添加上了
如果引用项目的话, 那么在安装 EleCho.GoCqHttpSdk.MessageMatching 的时候, 还会自动安装 EleCho.GoCqHttpSdk 吗
不会
例如:https://github.com/LiamSho/Dodo.Hosted/blob/main/src/DodoHosted.Open.Plugin/DodoHosted.Open.Plugin.csproj
对应包:https://www.nuget.org/packages/DodoHosted.Open.Plugin 与 https://www.nuget.org/packages/DodoHosted.Base.App
为了保证我不会写错代码, 目前还是用 "引用包" 的形式吧. 毕竟本地代码说不定我啥时候就会改呢
不过既然已经进入正式版本了, 接口大改肯定是不大可能了
至于 TargetFramework, 相信你也看到了, 在 .NET6 上不需要安装任何引用, 但是在 .NET Standard 上需要引用 System.Text.Json, 虽然我也没具体测试过如果我 .NET6 引用 .NET Standard 是否会安装这个包, 但是还是稍微区分一下, 至少在 nuget.org 的 dependencies 上看着比较明确
.NET6 引用 .NET Standard 是否会安装这个包
并不会,.NET 5,6,7 中 System.Text.Json 这个命名空间已包含在 SDK 内。Standard 是多个不同平台之间的兼容层而已。
为了保证我不会写错代码, 目前还是用 "引用包" 的形式吧. 毕竟本地代码说不定我啥时候就会改呢
引用包这个实属多此一举。你还要发布新版本,然后等 Nuget 审核通过,在能再继续写,完全没有必要。既然作为一整个 Lib,两个包应该是同时发布的。
- 使用
.editorconfig
- 多目标仅使用 netstardard (不采纳)
- 引用项目而不是 nuget 包 (待定)
- 拆除 csproj 到 build.props (不会弄)
- 项目扔
src
目录, 测试或示例项目放 demo (等待添加 demo) - Nuget Central Package Management (没看懂)
- 规范 commit message (好的, 我会规范的)
我想起来, 拓展包应该是兼容主包的大版本的, 所以除非主包接口改动, 拓展包才需要更新, 这种情况也是比较少的, 所以我觉得还是引用包比较好