展开讨论

经验与复盘经验摘录 · 机器翻译

我怀疑隐藏的间接性和运行时的魔法可能是你喜爱这门语言的原因

… 我怀疑隐藏的间接性和运行时的魔法可能是你喜爱这门语言的原因。但根据我的经验,这会导致可观测性差、控制流不透明以及在每个我曾工作过的组织和公司中难以调试。可以公平地争论说,这是因为使用C#的人不擅长软件工程。就像Uncle Bob总是正确的,当他批评团队没有遵循他的原则时。对我来说,这意味着这门语言本身与2025年的软件开发不匹配。这可能就是为什么我们看到越来越多的Go语言采用,因为它的哲学很明确。不过说句公道话,在跨平台GC语言领域,Python似乎在采用方面“占上风”。以我使用Django-Ninja的经验来看,这确实有道理。它非常高效,而且有了Pyrefly、UV和Ruff之类的东西,很容易让它成为一个YAGNI体验,同时具备良好的类型控制。我很高兴你享受C#,也很高兴看到它在不断发展。…

源讨论.NET 10的GC变化对开发人员意味着什么原帖 247 条评论 · 导入时统计
5

这条内容在回应什么?

父级讨论 · 节选

AD

一个我编写的小型音频和文本分析应用程序,除了在算法上之外,对底层性能没有特别的关注,它在 .net10 中运行速度比 .net8 快 4 倍。这里讨论的几乎每一种优化都适用于该应用。做得很好,向 dotnet 团队致敬。在我看来,C# 是最好的跨平台垃圾回收语言。就性能、功能、生态系统和开发人员体验而言,我真的想不到有其他语言能与之媲美。

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 5

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

OT

我被支付薪水来使用 Java 和 C#,同时我也使用 Go、Rust、Kotlin 和 Scala,我完全同意。 我像讨厌 C# 项目中的隐式性一样讨厌 Spring Boot、Quarkus 等的隐式性。 所有这些节省几行代码的魔法注解,直到它们不起作用,因为由于不兼容的注解导致运行时错误。 然后你不得不翻阅数页的文档,甚至在仓库中报告错误,而不是仅仅修改几行显式的代码。 显式性和冗长性基本上是两个不同的概念!

完整原文
CH

你只见树木不见森林。 C# 正变得越来越简洁(例如,switch 表达式、集合初始化器、对象初始化器等),在我看来,它在面向对象编程和函数式编程之间取得了很好的平衡。 在 C# 中,函数是一等公民,团队可以根据需要编写函数式风格的 C# 代码。但我怀疑,从人类协作的角度来看,这种方式可能难以扩展,因为我们已经遇到了很多困难,试图让 TypeScript 开发者采用更多的函数式编程技巧。我们发现,很多开发者喜欢使用函数式代码(例如 Linq、`.filter()`、`.map()`),但不喜欢编写函数式代码,因为大多数开发者并不是这样思维的,也没有接受过如何编写函数式代码和理解单子的训练。要求这些开发者使用单子,就像让孩子们吃胡萝卜一样。 在我们大部分的后端 TS 代码库中,很少有地方会出…

完整原文
ED

你调试时会遇到什么问题? 我从 1 版本开始使用 .NET 的经验是,它在现代语言中拥有最好的调试体验,从 Visual Studio 调试器到 sos.dll 调试崩溃转储。

完整原文
FE

我在 C# 上编程已经 16 年了,我完全不知道你所说的“隐藏的间接性和运行时魔法”是什么意思。也许只是对我来说已经变得不可见了,但 GC 是我所能想到的唯一一个核心语言中的“不可见的魔法”。我同意大学级别的面向对象编程原则是一种反模式;停止这样做。C# 完全不会强迫你这样做,除了在一些框架中,你必须继承 Controller 类(很烦人,但可以避免)。除此之外,我已经很多年没有使用过类继承了,98% 的类和结构体都是不可变的。只要你不写糟糕的代码,语言不会强迫你这么做。

完整原文
ME

> 就像 Uncle Bob 总是正确地指出团队在错误地应用他的原则一样。 这是讽刺吗?

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。