C++ 从C到C++;

C++ 从C到C++;,c++,c,oop,C++,C,Oop,大家好。 我最近开始了一份新的工作,在那里我应该使用C++/过去5年我一直在用C语言编程。我正在寻找使我在OOP中达到可接受水平的方法。我有C++和OOP的所有基本概念,但是没有很多实际的课堂设计经验。 我真正想要的是学习类库设计的方法,因为我将在一个团队中工作,他们正在编写C++库供其他程序员使用。请提出一些原则,如“责任分配”,这些原则可以帮助我总体设计课程。请给Bob Martin一个机会: SRP单一责任原则:一个班级应该有一个, 只有一个,改变的理由 OCP开闭原则:您应该能够扩展类

大家好。 我最近开始了一份新的工作,在那里我应该使用C++/过去5年我一直在用C语言编程。我正在寻找使我在OOP中达到可接受水平的方法。我有C++和OOP的所有基本概念,但是没有很多实际的课堂设计经验。
我真正想要的是学习类库设计的方法,因为我将在一个团队中工作,他们正在编写C++库供其他程序员使用。请提出一些原则,如“责任分配”,这些原则可以帮助我总体设计课程。

请给Bob Martin一个机会:

  • SRP单一责任原则:一个班级应该有一个, 只有一个,改变的理由
  • OCP开闭原则:您应该能够扩展类 行为,而不修改它
  • LSP Liskov替换原则:派生类必须是 可替换为它们的基类
  • ISP界面分离原则:使细粒度 特定于客户端的接口
  • DIP依赖倒置原则:依赖抽象,而不是抽象 关于混凝土

这里有很多帖子都在讨论这个问题,例如:


.

我知道这不是你一直在寻找的答案;它更像是其他答案的延伸(已经做了,还没来)。我想我应该添加一些一般的东西

  • 每个.hpp文件编写一个类声明,每个.cpp文件编写一个类定义。按文件所包含的类命名文件。(令人惊讶和沮丧的是,发现有多少代码没有正确执行这一基本规则。)
  • 请注意C++是一种多范式语言。有些事情没有等级制度就可以更好地解决。(有些事情需要模板,有些事情最好以旧的程序风格完成。)
  • 了解图书馆,以及图书馆是如何运作的。它们是一个很好的C++演示,尤其是在用户界面方面。它们在你的日常工作中也很有用
  • 阅读Scott Meyers的“高效C++”、“更高效C++”和“高效STL”。如果你有疑问,就拿第一本,你会发现为什么你应该自己读另外两本

我忍不住给出了这些基本知识,看到一个语言新手在养成许多坏习惯之前,实际上是在征求意见

坚实的原则是很好的指南,但是不要忘记,如果你想做好OOD,你必须有具体的用例。如果你正在设计一个类(为其他程序员)从中继承,你至少需要三个具体的(并且尽可能不同/现实)案例,在这些案例中你实际从类中继承,否则你将无法看到类应该如何工作。

我仍然喜欢Bjarne Stroustrup的书。它有几个章节专门介绍设计,也是一个很好的语言参考。有时阅读起来可能相当密集,但值得付出努力


我发现C++是一个很棒的工具,但只有在我真正学会使用它之后。阅读其他人建议的所有参考资料,实践是无可替代的

在使用正确的图表顺序(从类到顺序)进行编码之前,请尝试用UML设计所有内容。尽管所有(正确地)批评UML,但它将迫使您将程序视为一个交互对象系统,而不是代码序列

如果您试图严格按照这些原则设计程序,那么大多数“OOP原则”都很容易沦为荒谬。重构是另一回事


< >否则,确保你真正了解C++和STL。好的或坏的,STL是C++代码中的预期。

我最近也开始使用C++,这就是我所做的: 首先,我从一位同事那里得到了这本书,并完成了它的“语言”部分,做了所有的练习。“技术”一章也是很重要的一章

然后,我认为对我帮助最大的是阅读我的团队已经编写的代码,并试图理解其中所有内容的原因。如果您的团队成员知道如何很好地编写代码,这将是一个很好的教育。无论如何,它肯定会帮助你理解项目的目的和方法,以及对你的期望


读取项目的代码部分可能是你必须做的事情,我相信(为了使用库函数,实现类似的函数,或者添加到现有代码),但是有时人们跳过该部分或非常肤浅地进行。

< P>设计C++类层次结构供他人使用是一个雷区。我强烈建议阅读课堂设计中的一些常见陷阱。我推荐两本书:

  • (赫伯·萨特和安德烈·亚历山德雷斯库)。这里有很多具体的例子,介绍了如何以易于理解的方式创建适当的类
  • (斯科特·迈尔斯)。如何编写正确的C++,从C到C++的转换开始。经典

请参阅此链接。本pdf包含“设计原则和 “设计模式”


<>上述链接对你有很大帮助。

< P>根据STL的新工作是如何定位的,你会得到称赞或是被拍摄的:Alexandrescu的现代C++设计。 即使你不使用任何模式,它也会给你打开一个C++的新世界。
我会把那本书放在你阅读清单的第二位,排在梅耶斯的几本书之后。亚历山德雷斯库很漂亮。。。很强。

< P>需要几年才能精通C++。建议的书会有帮助的。我还建议你阅读Habor萨特的特殊C++系列。 短期内,你应该找一个C++导师来帮助你在新公司里快速成长。每个公司都有自己的“文化”围绕C++。注意事项。这可能比你阅读的内容更适合你的工作。F