Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

代码规范+新语法糖 #4

Open
lxymahatma opened this issue Sep 28, 2024 · 19 comments · May be fixed by #9
Open

代码规范+新语法糖 #4

lxymahatma opened this issue Sep 28, 2024 · 19 comments · May be fixed by #9

Comments

@lxymahatma
Copy link

lxymahatma commented Sep 28, 2024

因为使用了C#12以及开启了nullable,可以使用很多新的语法糖比如 using statements 可以不用括号围起来而是用 ;,在方法结束会自动释放,前面写了类型后面new的时候不用加类型名称,collection expression (可以增加性能)等等

代码规范方面,不清楚是不是因为比较赶着做功能,很多都不太统一

  1. 缺少 private public 修饰符
  2. class 内的 private field 命名规范一般为下划线开头如 _index,方便与传入的参数做区分
  3. 类和方法命名不够准确,比如 Common 类应该命名为 CommonDirs
  4. C#的方法内变量可以用var来声明,也有很多人用(靠ide推断类型)详情看 这里
  5. 有些方法的xml注释只有一半

希望可以在项目添加 .editorconfig 或者告知代码规范,如果允许的话我可以根据以上内容等做一个pr

@czastack
Copy link
Owner

你好,目前还是以开发功能和稳定性为优先,代码风格和规范方面没有很严格控制,我自身也非专业的C#程序员。给一些mod作者使用的时候,发现mod 作者的环境里不一定有装最新的.net sdk,为了降低使用成本,所以把一些最新的语法改回了兼容旧版的写法。欢迎提交pr。

@lxymahatma
Copy link
Author

你好,目前还是以开发功能和稳定性为优先,代码风格和规范方面没有很严格控制,我自身也非专业的C#程序员。给一些mod作者使用的时候,发现mod 作者的环境里不一定有装最新的.net sdk,为了降低使用成本,所以把一些最新的语法改回了兼容旧版的写法。欢迎提交pr。

一般来说就算不是最新的.net sdk应该也是.net6左右(?
但是.net6 11月也就结束维护了就是说(
.net7 今年7月多就已经结束维护了
所以现在理论上来说如果要开发应该要开始装.net8 sdk了,我觉得目前先考虑C#10(.net6),等结束维护之后再切换成.net8(?

@czastack
Copy link
Owner

@lxymahatma 可以的

@BlameTwo
Copy link

BlameTwo commented Oct 4, 2024

代码框架与与语言版本无关,升级sdk样式然后改个参数就行了

@lxymahatma
Copy link
Author

代码框架与与语言版本无关,升级sdk样式然后改个参数就行了

高语言版本得你下了新的sdk才能编译,比如c# 12的collection expression 必须有.net8在电脑上才可以编译,项目框架可以是net6

@BlameTwo
Copy link

BlameTwo commented Oct 4, 2024

代码框架与与语言版本无关,升级sdk样式然后改个参数就行了

高语言版本得你下了新的sdk才能编译,比如c# 12的collection expression 必须有.net8在电脑上才可以编译,项目框架可以是net6

没具体试过,装个vs就能开发

@lxymahatma
Copy link
Author

代码框架与与语言版本无关,升级sdk样式然后改个参数就行了

高语言版本得你下了新的sdk才能编译,比如c# 12的collection expression 必须有.net8在电脑上才可以编译,项目框架可以是net6

没具体试过,装个vs就能开发

合理,但是没必要,能不麻烦别人就不麻烦

@reece15
Copy link
Contributor

reece15 commented Oct 6, 2024

符合代码规范和新版本虽然很好(可以自己安装类似python的pylint/codestye或者js的eslint来自己约束?然后加上precommit就行?),但是我感觉目前最迫切的需求可能是;

  • patch支持
  • 游戏内控制台命令支持
  • 调试器:类似ue4ss的debug liveview
  • 安全限制:dll的mod形式,目前似乎运行的权限过大,如果有人发布恶意dll,可能会导致严重的安全问题。

@lxymahatma
Copy link
Author

符合代码规范和新版本虽然很好(可以自己安装类似python的pylint/codestye或者js的eslint来自己约束?然后加上precommit就行?),但是我感觉目前最迫切的需求可能是;

  • patch支持
  • 游戏内控制台命令支持
  • 调试器:类似ue4ss的debug liveview
  • 安全限制:dll的mod形式,目前似乎运行的权限过大,如果有人发布恶意dll,可能会导致严重的安全问题。

这个pr就是先解决代码规范,开发的事情我估计除了控制台以外都得c++解决,而且估计作者忙着研究怎么弄patch都没看github(

@oiuv
Copy link

oiuv commented Oct 9, 2024

我不会C#,想开发mod可咋办,我还得学学C#啊。

@BlameTwo
Copy link

我不会C#,想开发mod可咋办,我还得学学C#啊。

或者你可以用C++和uess开发mod,C#开发其实挺简单的,最重要的是游科的代码,我觉得是比较难读的,很别扭

@oiuv
Copy link

oiuv commented Oct 10, 2024

我不会C#,想开发mod可咋办,我还得学学C#啊。

或者你可以用C++和uess开发mod,C#开发其实挺简单的,最重要的是游科的代码,我觉得是比较难读的,很别扭

C++和uess开发mod,这个我可以考虑,我会c++,uess是指这个吗?https://github.com/UE4SS-RE/RE-UE4SS

@czastack
Copy link
Owner

@lxymahatma hook支持已经发布了,可以继续这个PR了,目前CSharpModExample是源码依赖CSharpModBase的,是否能在MR里改进一下。让mod作者在低版本.net sdk环境下也能直接编译CSharpModExample

@lxymahatma
Copy link
Author

@lxymahatma hook支持已经发布了,可以继续这个PR了,目前CSharpModExample是源码依赖CSharpModBase的,是否能在MR里改进一下。让mod作者在低版本.net sdk环境下也能直接编译CSharpModExample

因为我的想法就是让mod作者引用编译的dll而不是这个project(
所以说 CSharpModExample 我打算做成一个nuget template,就他们可以直接用vs或者rider来模板安装,我做的是 Muse Dash的mod模板可以看下这个 https://github.com/MDMods/MuseDash.Mod.Template

如果可以的话我就按照这个来做

@lxymahatma
Copy link
Author

@czastack 以及就是,我因为之前用的是MelonLoader,他们的mod dll就直接丢到mods文件夹里,然后专门新建一个UserLib文件夹用来放mod的依赖项目什么的,所以比较好奇为啥要创建一个文件夹然后把mod丢进去才能加载这件事情(

以及有很多乱七八糟的可能可以修改的小地方,但是因为是breaking change所以需要讨论
当然也不是不可以github讨论但是感觉最好还是qq讨论一下这件事,因为github实在不太容易看得到消息(

@Oodachi
Copy link

Oodachi commented Oct 18, 2024

@lxymahatma 因为我的想法就是让mod作者引用编译的dll而不是这个project

模板好啊, 像我这种业余C#选手 .csproj写的稀里糊涂的

@lxymahatma
Copy link
Author

@lxymahatma 因为我的想法就是让mod作者引用编译的dll而不是这个project

模板好啊, 像我这种业余C#选手 .csproj写的稀里糊涂的

但是作者没说打算咋样所以目前就没在弄这个(
刚好手上还有别的项目就先摸会鱼搓那个项目去了,等作者回了讨论完了具体实现再说

@czastack
Copy link
Owner

@czastack 以及就是,我因为之前用的是MelonLoader,他们的mod dll就直接丢到mods文件夹里,然后专门新建一个UserLib文件夹用来放mod的依赖项目什么的,所以比较好奇为啥要创建一个文件夹然后把mod丢进去才能加载这件事情(

以及有很多乱七八糟的可能可以修改的小地方,但是因为是breaking change所以需要讨论 当然也不是不可以github讨论但是感觉最好还是qq讨论一下这件事,因为github实在不太容易看得到消息(

Q群发你邮箱了,可以加群方便讨论

@lxymahatma
Copy link
Author

@czastack 以及就是,我因为之前用的是MelonLoader,他们的mod dll就直接丢到mods文件夹里,然后专门新建一个UserLib文件夹用来放mod的依赖项目什么的,所以比较好奇为啥要创建一个文件夹然后把mod丢进去才能加载这件事情(

以及有很多乱七八糟的可能可以修改的小地方,但是因为是breaking change所以需要讨论 当然也不是不可以github讨论但是感觉最好还是qq讨论一下这件事,因为github实在不太容易看得到消息(

Q群发你邮箱了,可以加群方便讨论

ok 已加现在等通过

@lxymahatma lxymahatma linked a pull request Oct 19, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants