【问题标题】:Best way to learn .NET/OOP best practices? [closed]学习 .NET/OOP 最佳实践的最佳方式? [关闭]
【发布时间】:2010-09-22 12:44:43
【问题描述】:

我对 .NET 编程(以及一般的 OOP)比较陌生,我想确保在设计我的应用程序时不会养成不良的初学者习惯。

如果您正在招聘一个新的 .NET 开发人员,并且必须让他相对较快地上手,但又想确保他采用最佳实践(例如,单一职责原则、单元测试、关注点分离),那么是您推荐的学习路径吗?

我最近一直在收听 Polymorphic Podcast,虽然收听关于最佳实践的讨论很有帮助,但我发现缺乏旨在介绍这些最佳实践的截屏视频和代码示例。

【问题讨论】:

    标签: .net oop


    【解决方案1】:

    有两个独立但相关的目标:

    • 做一个优秀的OO开发人员

    • 成为一名优秀的 .NET 开发人员

    在后者方面表现出色至少需要在前者方面表现出色,但两者都需要努力工作。不要拘泥于 Microsoft 的思维方式,甚至是 .NET 思维方式 - 您需要熟悉该领域的广泛领域。

    如果您有足够的灵活性,请为自己找一份有经验的人愿意提供指导的工作或团队。

    接下来,请认识到您需要进行大量阅读,包括在线阅读和离线阅读。如果您的阅读速度一般或更低(大约每分钟 250 字或更少),那么您应该考虑参加阅读技巧培训课程。我用Write Group(新西兰)完成了一门课程,阅读速度提高了三倍。

    在书籍方面,Microsoft Press 的Object Thinking 将是一个很好的起点;我会跟着 Programming .NET Components (Juval Lowy) 和 Smalltalk Best Practice patterns (Kent Beck),然后是 The Pragmatic Programmer (Hunt 和 Thomas)。

    之后,四处搜索(在 StackOverflow 或其他地方)并找到推荐书籍和博客的列表。继续阅读——尝试至少每两个月(如果不是每月)阅读一本关于新主题的新书。

    【讨论】:

      【解决方案2】:

      PluralSight patterns libraryprinciples of object oriented design 非常出色。每月的小额订阅非常值得。对我来说,从在线解释清楚的教程中学习比阅读书籍要容易得多。

      【讨论】:

        【解决方案3】:

        我认为您首先需要了解,成为一名了解 OOP 和最佳实践的“优秀”程序员需要时间和经验。没有书籍、博客或培训的神奇组合可以在战壕中复制时间。

        根据我自己的经验,我的建议是不要太担心您没有遵循最佳实践而只是编写代码。如果您是 OOP 或 .NET 的新手,您将会做一些愚蠢的事情。在你犯了足够多的错误以从中吸取教训之前,你将采取与“最佳实践”相反的做法。

        特异性训练理论指出,你应该专门做你想变得更好的事情。这意味着要编写大量代码才能更好地编写代码。

        现在,一旦您无所畏惧地编写了大量代码,您将需要补充外部知识。按重要性排序:

        1. 直接与比您更有经验的其他人合作。这是加快速度的最快方法。

        2. 读取其他 OOP .NET 代码。打开 来源非常适合这个!研究一下, 扩展它,向 OSS 添加功能 即使您从未提交过项目。

        3. 读书。我特别的意思 书……不是博客。书籍有更多 扩展主题的空间,并且是 最适合真正的人 在给定的基础上从头开始 话题。我推荐Code Complete 作为第一本书。

        4. 阅读“网络”。这包括 博客、stackoverflow 等。

        祝你好运!

        【讨论】:

          【解决方案4】:

          我在这里看到了很多很好的资源,但大多数都集中在阅读和学习材料上。虽然这些绝对是必不可少的,但我发现直到我实际使用了一种或多次模式、启发式或概念或其他任何东西时,它们才会真正点击。

          因此,我会推荐阅读,但是当您坐下来编写代码时,开始使用 NUnit 并练习 TDD(或 BDD 等)。这将帮助您做两件事。

          1. 它会迫使你解耦你的类。很难真正测试具有许多依赖项的代码。如果你想真正进入那里并编写测试,你将需要解耦。这是开始应用所有推荐阅读的好地方。 :)

          2. TDD 将帮助您在编写代码之前考虑如何与代码交互。我发现抽象地思考设计与实际从外部编码界面不同,后者在将各个部分组合在一起时更有用。

          【讨论】:

            【解决方案5】:

            我正在帮助一位与您所提到的情况完全一样的朋友。他是一个 HW 人,过去曾与 C 一起工作。

            我认为最好的方法是指导和编码。我向他解释了一些概念,然后请他编写一些代码。我们刚刚在多个平台(WCF、Silverlight、XNA...)中构建了一个简单的计算器,并使用了一些众所周知的模式(状态、MVP...)。

            我强迫他使用良好的编程实践并根据他的错误向他询问新功能来重构代码。例如,如果他将 View 和 Controller 之类的几个组件耦合在一起,我会要求他提供一个新视图……这显然使他重写了一堆代码,并且他意识到还有更好的方法……

            通过这种方式,他是提出自然脱钩的人,更重要的是“为什么是好的”。到目前为止,我对结果感到非常满意;他对单元测试以及它如何让他轻松地永久更改代码感到非常满意。

            恕我直言,关注点分离和单元测试可以通过编码和实现新功能更好地解释和理解;特别适合新程序员。一旦他买入,我会建议他阅读 GOF 的“Design Patterns”或其中的一些simpler varians

            【讨论】:

              【解决方案6】:

              巧合的是,我正在阅读一本非常不错的 VB.net 书籍(由 Apress 出版)。

              虽然网上有很多很棒的教程,但我还是建议买一本书,它们的方法通常要专业得多。

              尽管听起来很疯狂,但我发现学习编程时最好不要坐在电脑前!我总是读一两章,然后去我的电脑上真正地去做。

              【讨论】:

                【解决方案7】:

                如果您喜欢截屏视频,请查看Autumn of Agile。目前还没有那么多剧集,但我相信他会介绍一些最重要的最佳实践。

                剧集计划如下所示:

                • 敏捷价值观和实践概述
                • 基本 OO 设计原则
                • 实践中的设计模式
                • 单元测试基础知识
                • 模拟对象
                • TDD
                • 项目文件/文件夹组织
                • 源代码控制基础知识
                • 持续集成/构建自动化
                • 敏捷项目规划原则
                • 领域驱动设计核心概念概述

                系列作者还制作了系列Summer of NHibernate,已经相当火爆了。

                除此之外,dnr-tvJean Paul Boodhoo 已经制作了五集关于设计模式和两集关于测试驱动开发,我建议您也看看这些。

                【讨论】:

                  【解决方案8】:

                  如果像您的假设示例一样,我正在招聘一位新的 .NET 开发人员并希望确保他们采用最佳实践,我会首先让他们查看我当前的代码库。

                  那么我建议他们阅读以下内容:

                  这应该为任何人在最佳 OOP 实践方面打下坚实的基础。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-04-14
                    • 2010-10-06
                    • 1970-01-01
                    • 2011-10-18
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多