oop - 如何建立面向对象的技能?

标签 oop

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

3年前关闭。




Improve this question




作为一名核心开发人员,在编写应用程序时看到了类图、序列图,我决定改进自己,进行下一步的设计。
由于我是一名 OO 开发人员,因此我对提高我的设计技能很感兴趣。

例如,我很难设计货币转换器。

我对 SO 的问题:

  • 是不是靠经验设计技巧
    可以收购吗?
  • 将学习书籍/博客/ Material
    通过互联网等帮助?
  • 是否需要域
    应用程序的知识
    发达?
  • 了解设计模式、原则?
  • 学习“代码完成”书?
  • 需要有解决问题的能力吗?

  • 简而言之,给定一个问题,我只想以面向对象的方式解决它??

    最佳答案

    在做好的 OO 设计之前,你必须先做坏的 OO 设计。

    一个很棒的项目是使用您的货币转换器并慢慢移动代码以使用 OO 概念。 OO 是一个创造性的过程:没有错误的答案,但确实存在更糟糕和更好的答案。基本上,当您的代码保留功能并变得更短/更易于阅读时,它会更好。当它在不添加更多代码的情况下获得灵 active 时,那就更好了。但这是一个创造性的过程。使用像 GIT 这样的版本控制系统能够轻松地“撤消”、尝试一些东西并犯错。 OO设计是一个过程。

    • Is it by experience the design skills can be acquired?


    是的。

    • Will learning books/blog/material over internet etc help?


    是的。

    • Is it that one needs the domain knowledge of the application being developed?


    是的,但我认为对领域了解得太多会破坏好的设计。在与航空公司程序员一起工作时,我注意到已知的、毫无疑问的抽象(“机票”、“预订”)抑制了良好的 OO 设计。您的 OO 模型是 不是 真实世界的模型。这是您的程序的模型。

    • Knowing Design patterns, principles?


    是的,越多越好,永远如此。

    • Studying 'Code Complete' book ?


    很多人都说这是一本好书。但是,你读过伊塔洛·卡尔维诺吗?还是豪尔赫·路易斯·博尔赫斯?各种书籍都可能有所帮助。

    • Need to have Problem-solving skills?


    不会。您可以通过应用 OO(或任何其他范式)获得解决问题的技能。

    关于oop - 如何建立面向对象的技能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2794010/

    相关文章:

    perl - 在 OOP Perl 程序中转换类型

    c# - ASP.NET 2.0 中的静态类变量行为?

    java - 继承类型问题: is there a clean solution?

    javascript - 可接受/好的执行 Javascript "classes"(OOP) 的方法?

    python - 类方法缺少一个位置参数

    c++ - 为链接列表建立条目类

    javascript - 有没有办法通过 "undefine"实例方法来揭示原型(prototype)中定义的方法?

    c# - 如何在不实例化两次的情况下跨类共享值(或从另一个类获取变量)。

    php - OOP - session 和 PHP

    c++ - 在 C++ 中设计多个使用的类时,我应该使用 API/ABC 吗?