如何成为更好的C#程序员?

24

当你能创建类并完成简单的任务(例如GUI界面、读取文本文件等)后,下一步应该去哪里?我已经开始阅读《代码大全2》这本书了,但它更像是一本通用的编程书。接下来应该学习哪些主题?

22个回答

55

我认为,在某个时候,这不再是关于主题。而是关于实践。你得写代码,而且你得写很多。

人们经常告诉你在学习一门新语言时要找到一些特定的问题来解决,这是完全可以的,但如果有一个应用程序或应用程序的功能使你非常喜欢或者非常钦佩,请尝试自己构建它(或其中的部分)。更重要的是,如果你想知道“嘿,这个应用程序怎么做到了那个?!”试着去构建它。

你的许多项目可能永远不会超出你的桌面,但你所学到的知识、经验和工具将成为你可以运用到每一个后续项目中的东西。

虽然你永远不知道,但其中一个小爱好项目最终可能会为某个人解决问题。


这篇回答的另一个优点(非常棒)是,如果你只是动手去做东西,你将会实践。就像生活中的几乎任何事情一样,你做得越多,它就越自然地来了。你上次苦苦挣扎的事情下一次就轻松了。 - Rex M
我想我会制作一个互联网浏览器!(开玩笑) - Kredns
通过实践和尝试不同的事情,可以获得最佳的曝光度,从而提高你的编程功夫。 - Chris Ballance
1
没错。最好的方法是编写一个实际应用程序,你自己更或多或少应该能够使用。只有这样,你才能体验到在编程时应该面对的问题... - Tom Deleu
真的,但是构建业余项目不是最有效的方式。更快的学习方法是与经验更丰富的人一起工作。 - Martin Konicek
显示剩余2条评论

23

不是要反驳那些说“写代码”的人,但下一个你应该学习的主题是CLR的基本原理——引擎的工作原理,这个引擎坐落在所有这些库背后。Richter 的 "CLR Via C#" 是一个很好的学习资源。


哦,是的,那本书非常棒!每个.NET程序员都应该读它。 - Tor Haugen
完全同意。如果你作为C#开发人员要读两本书,那就是《代码大全》和《CLR via C#》。《CLR via C#》将会让你获得优势,因为可能不到1%的开发人员读过它。 - David Klempfner

11

编写一个桌面版的RSS阅读器。您将接触到许多不同的领域(解析文件、图形应用程序、HTTP、互联网的不稳定性),并且您实际上可能会每天使用这个结果。选择一个具体的目标或特性来工作,将有助于您比抽象的东西更快地学习。


我认为和第一个答案一样,我会这么做。谢谢! - Kredns
这是一个很好的练习。我在夜校用Java完成了它,并从中学到了很多东西。 - James P.

10

我同意到目前为止大部分答案,但我认为如果你想成为一名更优秀的开发者,你可以从不独自行动中获得很大的好处。尝试寻找一个能够指导你的人。多年来,我通过与比我更聪明、更有经验的程序员合作,在深度理解方面取得了最大的进步。(他们现在仍然是 :-) )


6

学习另一种语言并将所学应用于C#。

F#,Scala,Haskell - 选择很多 :)


2
这个被投票否决了,但是虽然这可能不是非常接下来要采取的步骤,但这个建议有很多价值。学习一门不同语言的基础知识(我选择了Python和Scheme),将为您提供以新的方式解决主要语言中的问题的方法。 - AwesomeTown

5
获取 ReSharper,保持所有推荐功能启用并理解它们。

4
学习最佳实践和软件工程,以及如何将它们应用到C#中。
学习版本控制、TDD、领域驱动开发、持续集成、MVC、MVP、一些模式:facade、factory、repository vs. active record等。
学习各种工具,可以帮助您避免重新发明轮子:验证应用程序块、NHibernate等。
我在几天前从CodeBetter的人那里找到了这本免费的电子书: 链接文本 我没有看完它,但它看起来像是一本不错的读物。

3

尝试阅读Mono源代码,了解用C#编写的C#编译器是如何实现的。您将学习到关于语言、编译器和计算机架构等方面的知识。这就是源代码项目的巨大好处 - 您可以从中学习。


2

2

浏览Stackoverflow上有关C#主题的问答。 :-D


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接