设计原则

15

在进行类设计时,您通常遵循哪些原则?

12个回答

28

面向对象类设计原则(“SOLID”原则)

  • SRP:单一职责原则一个类应该有且仅有一个引起它变化的原因。
  • OCP:开闭原则应该可以在不修改现有代码的情况下扩展一个类的行为。
  • LSP:里氏替换原则派生类必须能够替换其基类。
  • ISP:接口隔离原则制定特定于客户端的细粒度接口。
  • DIP:依赖倒置原则依赖于抽象而不是实现。

来源:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

视频(Uncle Bob):Robert C. Martin(叔叔鲍勃)的清洁代码


7

5

S.O.L.I.D.原则是关于it技术的重要原则,我尽量不偏离这些原则。


4
最基本的设计模式应该是KISS(保持简单傻瓜),这意味着有时候根本不需要为一些元素使用类来解决问题。此外,CRC(类、职责、协作者)卡片也是一个好方法(将卡片写在头文件中,而不是实际的卡片上,这样它们可以成为易于理解的文档)。

3

如上所述,一些基本的面向对象设计原则包括OCP、LSP、DIP和ISP。

Robert C. Martin(Object Mentor的成员)在这里提供了对它们的优秀概述:OOD Principles and Patterns


2
"资源获取即初始化"范式在编写C++代码和处理操作系统资源(文件句柄、端口等)时非常方便。
这种方法的一个重要好处是,一旦创建了对象,它就是“完整的” - 不需要两阶段初始化,并且不存在部分初始化对象的可能性。

2

松耦合、高内聚。

组合优于继承。


1

领域驱动设计通常是一个值得遵循的好原则。


0
我想要补充的是分层,应该在你的应用中定义层,明确每一层的职责和它们之间相互作用的方式。只有与该层具有相同职责的类才可以被允许在该层中。这样做可以有效地解决混乱问题、确保异常处理得当,并且确保新开发人员知道应该把代码放在哪里。
另一个设计方法是将你的类设计成可配置的,创建一个机制,使得配置可以被插入到你的类中,而不是在子类中覆盖方法,确定哪些变化是必要的,看看是否可以通过配置来实现,并确保此功能来源于配置。

0

基本上我喜欢使用接口进行编程。我尝试通过将变化的部分封装到不同的情况中,以避免代码重复,并将代码隔离成易于管理(对我的大脑来说)的块。稍后,如果需要,我可以很容易地重构代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接