Good challenges/tasks/exercises for learning or improving object oriented programming (OOP) skills提高您的面向对象编程技能的挑战是什么? 此次民意调查的目的是提供一个想法,以了解哪些练习对学习OOP有用。 挑战应该是尽可能与语言无关,要求很少或不需要使用特定的库,或者只需要最常用的库。 尝试在每个答案中仅包含一个挑战,这样一来投票就仅代表该挑战的优点。 如果指出了所需的技能水平,以及它为什么是有用的练习背后的原理,也将是很好的。 然后,可以将挑战的解决方案发布为"如何..."问题的答案,并从此处链接到。 例如:
面向对象设计中的构建技能是一本可能有用的免费书籍。描述如下 "本书的目的是通过为他们提供一系列有趣且适度复杂的OO设计练习来帮助初学者。这本书还可以帮助管理人员提高对OO软件开发过程的满意度。我们将构建是一个微不足道的步骤,将需要一些仔细的思考和设计;此外,由于应用程序本质上是娱乐性的,因此非常有趣且引人入胜,这本书使读者可以在项目截止日期之前探索OO设计的过程和工件。使好的设计看起来不可能。" 从头开始编写具有挑战性的程序。尝试让一些人(大约五个人应该可以使用)使用它。响应他们的更改请求。 调整程序的设计。从小开始,然后看着它成长。应对这种增长。这很难。随着时间的流逝,您还必须修复错误并进行维护,这对我来说是非常宝贵的一课。 挑战:用您选择的语言为您选择的网站/服务API编写一个包装,该包装还不存在(例如,用C#编写的ZenDesk API包装)。将包装程序作为开源发布,以供其他人使用。 技能等级:初学者到中级 基本原理:了解如何将第三方Web服务API外推到有意义的对象/类集合中,从而使该API在您选择的语言中的重用更加容易。 在学习了基础知识之后,请学习"四人帮"设计模式书。
这是经典之作,对于任何想了解如何使用OO来设计常见编码问题的优雅解决方案的编码人员,都必须阅读。 采取过程式的书面代码,然后尝试将其转换为基于OOP的解决方案。在此过程中,请查阅有关重构和设计模式的书。我的一个朋友能够以这种方式在理解面向对象的概念方面迈出了一大步。就像其他任何东西一样,这可能并不适合所有人。 我发现CRC卡在学习,教学和构建良好的OO设计方面非常有效。 尽管比"从头开始"分配的访问性低,但无疑是一个很好的挑战,那就是重构一些不使用继承或不使用继承的代码以充分利用继承的现有代码。重构的过程将暴露很多oop的好处和陷阱,就像我在最近的项目中所做的那样。与过去的项目创建了自己的面向对象的设计相比,它还促使我更好地理解概念。 给定的任务与成为" OOP"几乎没有关系,更多的是如何评分。 我将阅读《重构》一书的第3章,并确保解决方案中没有任何不好的代码味道。或者,更重要的是,仔细检查那些确实适用的方法。 最重要的是,注意设置器和获取器的存在(表明您正在使用一个类的值,而不是要求该类对自己的值进行操作)-或使用"扩展"而不应用Liskov替换原理,诸如此类那。 |