如何改进面向对象的编程?

时间:2009-12-13 23:14:43

标签: c# oop

我理解程序编程(嗯,谁没有)并希望对OOP及其后的功能有一个很好的理解。我只是一个业余爱好者所以它会花费我一个年龄和一天,但它很有趣。

有没有人对我能提供什么帮助有任何想法?项目创意?有充分记录的代码示例是什么?

我目前正在使用C ++,但C#看起来更好用。

12 个答案:

答案 0 :(得分:10)

Head First 有一些很棒的OOP书籍涵盖Object-Oriented Analysis and DesignObject-Oriented Design Patterns

答案 1 :(得分:6)

我建议您按Object Thinking阅读David West。书中的代码很少,但很多关于如何建模的讨论。

我希望有人在我开始时告诉我的一些事情是:

  1. 在对对象进行建模时,您应该关注的行为不仅仅是数据的形状。
  2. 虽然许多OO教程模拟动物和车辆等现实世界的东西,但我们在OO软件中建模的许多东西都是概念和结构(在现实世界中没有物理代表的东西)。

答案 2 :(得分:6)

我建议主要使用强类型语言(如C#或Java),因为许多设计模式和一般OOP原则都适用于强类型(GOFRefactoring,{ {3}})。 Ruby非常棒,但很多常见的OOP原则(如编码到接口)都不适用。

花一些时间与鲍勃叔叔的Uncle Bob原则。慢慢来,特别注意单一责任。如果你没有从鲍勃叔叔那里得到任何其他东西,那么就把SRP放在脑海中并尽早应用它。

我也喜欢鲍勃叔叔的代码katas。我建议您完成SOLID

答案 3 :(得分:4)

要真正熟悉面向对象编程,您可以做一些事情。

  1. 强迫自己使用对象模拟真实世界的问题。创建表示对象的类,以及表示可以执行的操作的方法。

  2. 使用真正强制OOP的语言和/或框架。直到我开始使用Java类并开始大量使用Swing,我才真正开始使用OOP。我最近没有玩过C#,但我认为无论是C#还是Java都是一个不错的选择。

答案 4 :(得分:2)

尝试学习Smalltalk - 改善OO编程的最佳方法。

答案 5 :(得分:2)

在获得基本原理的基本想法后,最好的方法是通过实例学习。下载流行的开源项目并深入研究它们。我从中学到了很多项目:

答案 6 :(得分:1)

我最近从PHP转换为C#并热爱它的每一分钟!我会说找到一个灵活的时间表的新项目,然后潜入。也可以获得几本书,尤其是OOP概念和设计模式。

答案 7 :(得分:1)

为了掌握面向对象的技能,您需要大量练习

尝试用“对象术语”来思考你用代码做的所有事情。

应用它:

  • 使用服务器端语言
  • 保持Java Script代码面向对象
  • 考虑保持CSS代码易于重用,并且包含低度的双重性。

答案 8 :(得分:1)

阅读Bertrand Meyer's OOSC2。它可能是有史以来最好的OO编程书。

答案 9 :(得分:0)

这取决于您所知道的语言。我个人会推荐某种类型的OO脚本语言。 IE PHP或Python,我相信这将帮助您顺利过渡。

答案 10 :(得分:0)

我认为你可以研究测试驱动开发。这会自动使您遵守面向对象原则的规则。这是实用的方法,但它的工作原理。您还可以通过学习固件问题(如SOLID原则和设计模式)来支持此过程。阅读大项目的源代码也是改善面向对象技能的好主意

答案 11 :(得分:0)

我希望很久以前给我的一条建议是:

  

不要过度使用继承。

对于初学者来说这是一个非常容易陷阱(imho),因为它是每个人都在讨论的OOP中的一个重要概念。

基本上,你应该只在真正有意义的地方使用继承 - 想想数据类型,一些小部件层次结构,以及任何人都会使用它的关系是如此明显的东西。否则,您应该将对象注入其他对象并调用它们以更改功能(组合)。

不要试图只定义一个抽象方法的加载并多次重写以实现它们,当你可以有一个单独的类并注入(构造函数的参数)一个实现你调用的接口的对象做任何变量功能时否则你会放入抽象方法。 这将导致更简单,更可重用的代码(根据我的经验),并且更易于测试。