我对.NET编程(以及一般的OOP)相对较新,我想确保在设计应用程序时我没有养成糟糕的初学者习惯。
如果您正在招聘一名新的.NET开发人员并且必须让他加快速度,但也希望确保他采用最佳实践(例如,单一责任原则,单元测试,关注点分离),那么是你推荐的学习途径吗?
我最近一直在听多态播客,虽然听取有关最佳做法的讨论很有帮助,但我发现缺少截屏和代码示例,旨在介绍这些最佳做法。
答案 0 :(得分:16)
如果在您的假设示例中,我正在招聘新的.NET开发人员并希望确保他们采用最佳实践,那么我首先要让他们查看我当前的代码库。
然后我建议他们阅读以下内容:
这应该为任何人提供最佳OOP实践的坚实基础。
答案 1 :(得分:15)
有两个独立但相关的目标:
和
优秀的后者需要至少擅长前者,但两者都需要努力工作。不要陷入微软的思维模式,甚至是微软的思维模式 - 你需要熟悉这个领域的熟悉程度。
如果你有这样做的灵活性,找一个有经验的人愿意做一些指导的工作或团队。
接下来,要认识到你需要在网上和网上做很多阅读。如果您的阅读速度是平均或更低(每分钟约250字或更少),那么您应该考虑参加有关阅读技巧的培训课程。我已经用Write Group(新西兰)完成了一门课程,并且阅读速度提高了三倍。
就书籍而言,来自微软出版社的Object Thinking将是一个很好的起点;我会跟Programming .NET Components(Juval Lowy)和Smalltalk Best Practice patterns(Kent Beck),然后是The Pragmatic Programmer(Hunt和Thomas)。
之后,浏览(在StackOverflow或其他地方)并找到推荐书籍和博客的列表。继续阅读 - 尝试至少每两个月阅读一本关于新主题的新书,如果不是每月。
答案 2 :(得分:4)
如果您喜欢截屏视频,请查看Autumn of Agile。目前还没有那么多的剧集,但我相信他将涵盖一些最重要的最佳实践。
剧集计划如下所示:
该系列的作者也制作了一系列Summer of NHibernate,这个系列很受欢迎。
除此之外,在dnr-tv Jean Paul Boodhoo已经制作了五集关于设计模式的事件和两部关于测试驱动开发的事件,我建议你也看一下。
答案 3 :(得分:2)
我在这里看到很多好资源,但大多数都专注于阅读和学习材料。虽然这些绝对是必不可少的,但我发现他们实际上并没有真正点击,直到我实际使用了一个模式或一个概念或概念或者任何一次或多次。
因此我建议阅读,但是当你坐下来编写代码开始使用NUnit并练习TDD(或BDD等)时。这将有助于您做两件事。
它会迫使你解开课程。很难真正测试具有许多依赖性的代码。如果你想真正进入并编写测试,你需要解耦。这是开始应用所有推荐阅读的好地方。 :)
TDD将帮助您在编写代码之前考虑如何与代码进行交互。我发现抽象地考虑设计与从外部实际编写界面不同,后者在将各个部分拟合在一起时更有用。
答案 4 :(得分:1)
我认为你需要首先明白,作为一个理解OOP和最佳实践的“优秀”程序员需要时间和经验。没有书籍,博客或培训的神奇组合来在战壕中复制时间。
根据我自己的经验,我的建议是不要太担心你没有遵循最佳实践而只是编写代码。如果您不熟悉OOP或.NET,那么您将会做一些愚蠢的事情。你会做出与“最佳实践”相反的事情,直到你犯了足够的错误来向他们学习。
特异性训练理论指出,你应该专门做那些你想要变得更好的。这意味着要编写大量代码以便更好地编写代码。
现在,一旦您编写了大量代码而没有恐惧,您将需要补充外部知识。按重要性排序:
直接与经验丰富的人合作。这是加快速度的最快方法。
阅读其他OOP .NET代码。打开 来源很棒!研究它, 扩展它,为OSS添加功能 项目,即使你从未提交过。
阅读书籍。我特别指的是 书籍......不是博客。书籍有更多 扩大主题的空间 最适合真实的人 从头开始给定 话题。我推荐Code Complete作为一本好书。
阅读'网。这包括 博客,stackoverflow等。
答案 5 :(得分:1)
PluralSight patterns library和principles of object oriented design非常出色。每月的小订阅非常值得。从网上学到很好的解释教程对我来说比阅读书籍要容易得多。
答案 6 :(得分:0)
巧合的是,我正在读一本VB.net的书(由Apress出版),这本书非常好。
虽然网上有很多很棒的教程,但我仍然建议买一本书,他们的方法通常都比较专业。
听起来很疯狂,我发现在学习编程时不要坐在我的电脑前好多了!我总是读一两章,然后去我的电脑做真实的。
答案 7 :(得分:0)
我正在帮助一个正好在你提到的情况下的朋友。他是一名过去常常与C合作的硬汉。
我认为最好的方法是指导和编码。我向他解释了一些概念,然后让他编写一些代码。我们刚刚在多个平台(WCF,Silverlight,XNA,...)中构建了一个简单的计算器,并使用了一些众所周知的模式(状态,MVP ......)。
我迫使他使用良好的编程实践并通过根据他的错误向他提出新功能来重构代码。例如,如果他耦合了View和Controller这样的几个组件,我会问他一个新视图......这显然让他重写了一堆代码,他意识到有更好的方法......
通过这种方式,他可以提出自然的脱钩,更重要的是“为什么是好的”。到目前为止,我对结果非常满意;他非常满意单元测试以及它如何让他轻松地改变代码。
通过编码和必须实现新功能,可以更好地解释和理解IMHO对关注点和单元测试的分离;特别适合新程序员。一旦他买进,我会建议他阅读GOF或其中一些Design Patterns的“simpler varians”。