1

我已经使用 C# 快 3 个月了。我想知道制作一个高效而聪明的 C# 程序员所涉及的步骤是什么。由于 SO 上有很多专业程序员在使用 .Net Framework 和 C# 方面拥有丰富的经验,我想问他们,如果你有耐心和努力工作,那么正确的道路是什么?从 C# 初学者到 C# 专家。
我真的很想将我的身份从 C# 初学者提升为专家或 Guru。我希望这个问题的答案也能帮助其他 C# 程序员,无论是新的还是有经验的。基本上我对专家的期望是一个列表,比如:-

  • 你应该做单元测试
  • 您应该了解基本的数据结构,如列表或字典我希望您理解我的意思
    注意:- 单元测试和数据结构示例取自提供给这个问题的答案。
4

3 回答 3

2

了解接口与继承

了解匿名函数/委托/lambdas

了解基本数据结构(列表、字典、数组、表格以及何时使用它们)

了解内存消耗

O(n) 与 O(log n) 等。

学习递归

大量学习和体验任何语言都有帮助,但在我的时代,C# 是通用编程中最好的。你很幸运!

于 2013-10-27T12:29:15.420 回答
2

简答

(我推荐这个答案而不是我的长答案,因为它不太可能过时并将你指向那些比我更有知识的人)

阅读: http: //www.codinghorror.com/blog/2004/02/recommended-reading-for-developers.html

做:https ://stackoverflow.com/questions/1503239/good-c-sharp-open-source-projects-to-participate-in

问:https ://stackoverflow.com/


长答案

(基于修改后的问题)

根据你想去的地方,不同的答案是适用的。例如,编程电脑游戏与编程网站需要非常不同的技能,并且在与他人合作、兑现承诺、建立客户信心等方面需要考虑非技术技能。

考虑到这一点,确保你自己定义你的目标是什么,朝着那个方向努力,但要定期回顾事情以确保你在实现目标的轨道上,并且你最初设定的目标是你希望达到的目标.

  • 测试驱动开发 (TDD) - 通过在编写解决方案之前编写测试,您的代码以更加模块化的方式构建。这使得它更容易测试和维护。提供这些测试还可以降低与未来更改相关的风险,因为您的大部分回归测试将在您修改代码时自动化。

  • 解耦设计——即编写缺乏相互依赖关系的代码。控制反转 (IoC) 和依赖注入是如何在应用程序中实现这一目标的好例子,面向服务的架构 (SOA) 在多系统规模上实现这一目标。不过,首先,简单地将代码分解为类和过程以避免单一方法将使您处于有利地位。

  • 模式 - 这些是针对一般问题的精心设计的解决方案。了解它们既有助于教您解决方案本身,也有助于为您提供识别代码部分的词汇表,还可以让您了解其他人解决这些原始问题的思维过程/方法。 http://www.martinfowler.com/eaaCatalog/

  • 避免使用框架——对于经验丰富的开发人员来说,可以选择你认为有益的框架,但我认为如果你正在学习,你想在尝试添加其他任何东西之前了解技术的核心。一旦您了解了仅使用该语言的可能性,您就可以更好地评估每个框架的好处和问题,并可以决定您认为哪种语言最适合用于任何特定项目。刚开始学习框架可能会导致您错过核心语言中的重要内容,并将时间投入到几年后就会过期的技术上。了解核心将帮助您以后更轻松地选择新框架,但不会将您束缚在任何特定框架中。注意:有些框架是不可避免的——i。e. 如果使用 C#,您将使用 .Net 框架 - 与所有规则一样,也有例外。

  • 了解黑匣子——在编写代码时知道发生了什么;什么与其他什么交互,数据来自哪里,数据离处理器有多远,创建一条信息需要做多少工作,可以缓存(记住)什么数据与需要什么数据从源读取或每次重新计算以确保它不会被更改。

除了在 Jeff Atwood 的 Coding Horror 博客上推荐的书籍之外,我还会添加这本书:ASP.NET MVC 4 and the Web API,尤其是在您进行任何形式的 Web 开发时。这本书只有 130 页,但与大多数仅关注其主题并提供理论示例的编程书籍不同,这本书将引导您完成一个项目,其中包括日志记录、安全性、域模型等,以及它设置的 REST 服务出去解决。

于 2013-10-27T12:22:26.833 回答
2

这是一个很好的步骤清单,尽管要加一点盐,因为它现在有点老了。

http://abdullin.com/journal/2010/11/19/10-steps-to-become-better-net-developer.html

如果你看不到那个链接,他的名单是:

  1. 学习单元测试
  2. 熟悉分布式版本控制系统:Git 或 Mercurial。
  3. 了解 IoC 容器:Autofac、Windsor Container 和 StructureMap。
  4. 为您选择的开源项目做出贡献。
  5. 了解持续集成并尝试设置 TeamCity、Hudson 或 CruiseControl.NET。
  6. 了解 NHibernate 对象关系映射器,但要准备好在 NoSQL 持久性方面超越它,例如 CouchDB、MongoDB 或 RavenDB。
  7. 查看有关云计算的热门话题,尝试 Windows Azure 平台,并尝试在 Linux 上使用 Mono 运行您的 .NET 应用程序(一些免费提供尝试)。
  8. 熟悉消息传递架构并尝试 NServiceBus、MassTransit 或 RhinoQueues;然后了解 MSMQ 的替代方案 - AMQP 和 RabbitMQ。
  9. 阅读领域驱动设计并将其应用到您的项目中。
  10. 开始使用 CQRS 架构并在学习项目中进行实践。

他建议你按顺序做,但你可以随时做 9,我强烈推荐。

于 2013-10-27T13:03:08.590 回答