C#级数路径

C#级数路径,c#,coding-style,C#,Coding Style,我已经使用C#将近3个月了。我想知道制作一个高效、聪明的C#程序员需要哪些步骤。由于SO上有许多专业程序员在使用.Net Framework和C#方面有着丰富的经验,我想问他们,如果你耐心努力,你能从C#初学者变成C#专家的正确途径是什么。 我真的很想提高我的地位,从一个初学C#程序员到一个专家或大师。我希望这个问题的答案也能帮助其他C#程序员,无论是新手还是有经验的程序员。。 基本上,我从专家那里得到的是一份清单,如:- 你应该做单元测试 您应该了解基本的数据结构,如列表或字典 我希望你明白

我已经使用C#将近3个月了。我想知道制作一个高效、聪明的C#程序员需要哪些步骤。由于SO上有许多专业程序员在使用.Net Framework和C#方面有着丰富的经验,我想问他们,如果你耐心努力,你能从C#初学者变成C#专家的正确途径是什么。
我真的很想提高我的地位,从一个初学C#程序员到一个专家或大师。我希望这个问题的答案也能帮助其他C#程序员,无论是新手还是有经验的程序员。。 基本上,我从专家那里得到的是一份清单,如:-

  • 你应该做单元测试
  • 您应该了解基本的数据结构,如列表或字典 我希望你明白我的意思
    注:-单元测试和数据结构示例取自此问题的答案

    • 简短回答

      (我推荐这个答案而不是我的长篇答案,因为它不太可能过时&让你看到那些比我更懂知识的人)

      阅读:

      做:

      询问:


      长答案

      (根据经修订的问题)

      根据你想去哪里,不同的答案是适用的。例如,编程计算机游戏与编程网站有着截然不同的技巧,在与他人合作、兑现承诺、创造客户信心等方面有非技术技能。 记住这一点,确保你为自己定义了你的目标是什么,朝着这个目标努力,但要定期回顾一些事情,以确保你正在朝着你的目标前进,并且你最初设定的目标就是你希望达到的目标

      • 测试驱动开发(TDD)-通过在编写解决方案之前编写测试,您的代码将以更模块化的方式进行结构化。这使得测试更容易,维护也更简单。这些测试可用也降低了与未来更改相关的风险,因为在修改代码时,大多数回归测试都将自动进行

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

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

      • 避免使用框架——对于经验丰富的开发人员来说,挑选并选择您认为有益的框架是可以的,但我认为,如果您正在学习,您希望在尝试添加任何其他内容之前了解技术的核心。一旦您了解了语言本身的可能性,您就可以更好地评估每个框架的好处和问题,并可以决定在任何特定项目中最适合使用哪种框架。在你刚开始学习的时候,学习框架可能会让你错过核心语言中的重要内容,并把时间花在几年后就会过期的技术上。了解核心将帮助您以后更容易地选择新框架,但不会将您与任何特定框架捆绑在一起。 注意:有些框架是不可避免的——例如,如果使用C#你将使用.Net框架——因此与所有规则一样,也有例外

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


      除了杰夫·阿特伍德(Jeff Atwood)的“编写恐怖代码”博客上推荐的书之外,我还想添加这本书:,特别是如果你正在进行任何形式的web开发。这本书只有130页,但与大多数只关注其主题的编程书籍不同,它提供了理论示例,这本书指导您完成一个项目,包括日志记录、安全性、域模型以及它要解决的REST服务之上的更多内容。

      简短回答

      (我推荐这个答案而不是我的长篇答案,因为它不太可能过时&让你看到那些比我更懂知识的人)

      阅读:

      做:

      询问:


      长答案

      (根据经修订的问题)

      根据你想去哪里,不同的答案是适用的。例如,编程计算机游戏与编程网站有着截然不同的技巧,在与他人合作、兑现承诺、创造客户信心等方面有非技术技能。 记住这一点,确保你为自己定义了你的目标是什么,朝着这个目标努力,但要定期回顾一些事情,以确保你正在朝着你的目标前进,并且你最初设定的目标就是你希望达到的目标

      • 测试驱动开发(TDD)-通过在编写解决方案之前编写测试,您的代码将以更模块化的方式进行结构化。这使得测试更容易,维护也更简单。这些测试可用也降低了与未来更改相关的风险,因为在修改代码时,大多数回归测试都将自动进行

      • 解耦设计-