Design Smells And OO Design Principles
2004-08-24 13:52
357 查看
Design Smell - The Odors of Rotting Software
1.Rigidity - THe system is hard to change because every change forces many other changes to other parts of the system.
2.Fragility - Changes cause the system to break in places that have no conceptual relationship to the part that was changed.
3.Immobility - It is hard to disentangle the system into components that can be reused in other system.
4.Viscosity - Doing things right is harder than doing things wrong.
5.Needless Complexity - The design contains infrastructure that adds no direct benefit.
6.Needless Repetition - The design contains repeating structures that could be unified under a single abstract.
7.Opacity - It is hard to read and understand.It does not express its intent well
Princples of object-oriented design that help developers eliminate design smells and build the best designs for the current set of features
SRP - The Single Responsibility Principle
OCP - The Open-Closed Principle
LSP - The Liskov Substitution Principle
DIP - The Dependency Inversion Principle
ISP - The Interface Segregation Principle
SRP: A class should have only one reason to change.
OCP: Software entities(classes,modules,functions,ect.)should be open for extension,but closed for modification.
LSP: Subtypes must be substitutable for their base types.
DIP: High-level modules should not depend on low-level modules.Both should depend on abstractoins;Abstractions should not depend on details.Details should depend on abstractions.
ISP: Classes have "fat" interface can be broken into groups of methods by,each group serves a different set of clients;clients should not know about them as a single class.
refer to the <<Agile Software Development>> -- Martin
1.Rigidity - THe system is hard to change because every change forces many other changes to other parts of the system.
2.Fragility - Changes cause the system to break in places that have no conceptual relationship to the part that was changed.
3.Immobility - It is hard to disentangle the system into components that can be reused in other system.
4.Viscosity - Doing things right is harder than doing things wrong.
5.Needless Complexity - The design contains infrastructure that adds no direct benefit.
6.Needless Repetition - The design contains repeating structures that could be unified under a single abstract.
7.Opacity - It is hard to read and understand.It does not express its intent well
Princples of object-oriented design that help developers eliminate design smells and build the best designs for the current set of features
SRP - The Single Responsibility Principle
OCP - The Open-Closed Principle
LSP - The Liskov Substitution Principle
DIP - The Dependency Inversion Principle
ISP - The Interface Segregation Principle
SRP: A class should have only one reason to change.
OCP: Software entities(classes,modules,functions,ect.)should be open for extension,but closed for modification.
LSP: Subtypes must be substitutable for their base types.
DIP: High-level modules should not depend on low-level modules.Both should depend on abstractoins;Abstractions should not depend on details.Details should depend on abstractions.
ISP: Classes have "fat" interface can be broken into groups of methods by,each group serves a different set of clients;clients should not know about them as a single class.
refer to the <<Agile Software Development>> -- Martin
相关文章推荐
- Design Smells And OO Design Principles
- Bob Tarr: Some Object-Oriented Design Principles(1): Minimize The Accessibility of Classes and Members
- An introduction to SOLID principles in OO design
- 说Hand-over-hand lock: 通读Concurrent Programming in Java: Design Principles and Patterns (1)
- Tell Above, and Ask Below - Hybridizing OO and Functional Design
- The Design of Sites: Patterns, Principles, and Processes for Crafting a Customer-Centered Web Experience
- The Essential Guide to User Interface Design: An Introduction to GUI Design Principles and Technique
- Dynamic Adaptive Streaming ove HTTP(DASH) Design Principles and Standards
- Tell Above, and Ask Below - Hybridizing OO and Functional Design
- Closure Design Goals and Principles
- 《Concurrent Programming in Java: Design Principles and Patterns》Second Edition
- Principles of Service Design: Service Patterns and Anti-Patterns
- six OO design principles
- Design Principles for Collection and Enumerator Interfaces
- Design Principles and Design Patterns(设计原则与设计模式) -Robert C. Martin
- Object-Oriented Design Knowledge: Principles, Heuristics And Best Practices
- Concurrent Programming in Java(TM): Design Principles and Pattern
- 啃"创建线程"一章的疑难解析: 通读Concurrent Programming in Java: Design Principles and Patterns (2)
- 【原创】The Design and Implementation of OO Model of Fetion Engine
- The Design of Sites: Patterns, Principles, and Processes for Crafting a Customer-Centered Web Experi