展开讨论

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

最终,我转向了其他平台和编程语言,并意识到要……

… 最终,我转向了其他平台和编程语言,并意识到要作为Windows软件的程序员,我需要了解很多关于该平台的细节。文献中充满了关于如果你了解一些底层细节,就可以更高效地利用该平台的文章。远离Windows编程释放了大量脑力资源。当我开始在Java上使用所有库和框架进行编程时,我从未被鼓励去超越API。另一方面,这些API通常有多个实现,所以如果我对某个实现不满意,我可以选择另一个。当然,在Java中构建GUI(图形用户界面)一直是个真正的混乱,所以我没有这么做。从那以后,我用.NET上的经典基于窗体的平台编写了相当多的C#代码,这与C++和MFC的体验完全不同。这是一次愉快的经历。…

源讨论C#中Async/Await的工作原理原帖 132 条评论 · 导入时统计
3

社区评论 0

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

原讨论中的回复 3

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

KO

> MFC 有它的一套怪癖,开发过程相当痛苦 我也有同样的经历。然后我学习了 win32,MFC 的 C 语言前身,一切开始变得有意义了。 MFC 基本上是试图在 win32 之上添加一个面向对象的层,但它们在这方面彻底失败了。API 非常糟糕,我宁愿直接用 win32 来写。 而且,这并不是面向对象的失败,而是对面向对象的理解和应用的失败。

完整原文
BR

现在 .NET 开源(以及像 ASP.NET 这样的框架)是我最喜欢的事情之一,因为我可以轻松地查看我用于边缘情况/细节的各种功能的内部实现。例如,对于 int.TryParse(myString, out int i),如果 myString 是 NULL 会发生什么?大多数核心 .NET 库的文档都很不错,但没有什么能比快速查看实际代码更有效。这在 ASP.NET 的各种结构中尤其如此,文档经常落后于新版本,而且本质上无法涵盖所有可能的选项。 深入研究核心库还能让你成为一名更好的程序员,因为它强化了常见的编程模式,并让你接触到新的技术。就在前几天,我研究了 ArgumentNullException.ThrowIfNull 的实现,发现了一个新的(C# 10)特性 [CallerArgumentExpression("argument")],它能给你提供…

完整原文
SE

我认为这种高级API的初衷是它们在9X%的情况下表现得足够好,并且更容易使用,如果你需要性能,仍然可以深入内部查看。 对于你例子的反面,考虑一下Java和.NET的GC。大多数人不需要调整Java GC,只需从stackoverflow上复制一些配置即可,但是为了性能而调整Java GC(实际上是GCs)以及阅读其详细日志是一门深奥的艺术,网上有很多非常长且详细的文章和示例故事。就我的经验而言,.NET GC更加不透明,当它“无法正常工作”时真的令人恼火。 async await大多数时候让编写异步代码变得非常简单……比Java更容易,尽管我已经好几年没用过Java了,也许它已经改进了。然而,当它不完全正常工作时,你需要深入内部查看。

完整原文
在 Hacker News 阅读

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

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