OrgEleCho/EleCho.GoCqHttpSdk

关于代码规范

AlisaAkiron opened this issue · 10 comments

无意中发现了这个项目,正好准备整个bot(

提供几个意见:

  1. 添加 .editorconfig 用于规范格式化

示例(.NET 编译器官方仓库):https://github.com/dotnet/roslyn/blob/main/.editorconfig

  1. 作为一个 Library,我认为 TFM 仅 netstandard 2.0 或者 netstandard 2.1 就足够了
  2. EleCho.GoCqHttpSdk.MessageMatching 引用 EleCho.GoCqHttpSdk 项目而不是 Nuget 包
  3. 拆除 csproj 里面的一些东西放到 Directory.build.props 里面去
  4. 把项目放到 src 目录,测试或者示例项目放到 demo 目录
  5. Nuget Central Package Management
  6. 规范 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.Pluginhttps://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 (好的, 我会规范的)

我想起来, 拓展包应该是兼容主包的大版本的, 所以除非主包接口改动, 拓展包才需要更新, 这种情况也是比较少的, 所以我觉得还是引用包比较好