You are not logged in. Your edit will be placed in a queue until it is peer reviewed.
We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.
- If I want to extend 1 more subclass ToughGuy that only can temporary delete Account by setting status to "Temp_Closed", I have to use a lot of if/else in Account class. It violates O principle in SOLID. So, that is still fine ?Nguyen Nguyen– Nguyen Nguyen2019-07-31 11:35:49 +00:00Commented Jul 31, 2019 at 11:35
- 1@NguyenNguyen: I don't subscribe to the strict interpretation of the Open/Closed principle that code must not ever be changed. If requirements change, like adding the feature of temporary deletion, then in my book it is fine to change existing code, as long as you can prove that you didn't break existing functionality that should still work.Bart van Ingen Schenau– Bart van Ingen Schenau2019-07-31 12:40:03 +00:00Commented Jul 31, 2019 at 12:40
- 2@NguyenNguyen: You cannot close against any type of change; the Open/Closed principle must be applied strategically, where it matters - meaning against certain kinds of change, at certain parts of the codebase. If it turns out you made the wrong choices, then you have to redesign at some point. Which is why you want to postpone those choices until the "last responsible moment", when you know enough about the domain and the kinds of changes that are likely to occur, so that you can base the tradeoffs in your design around that knowledge. These principles must not be applied dogmatically.Filip Milovanović– Filip Milovanović2019-07-31 15:54:02 +00:00Commented Jul 31, 2019 at 15:54
Add a comment |
How to Edit
- Correct minor typos or mistakes
- Clarify meaning without changing it
- Add related resources or links
- Always respect the author’s intent
- Don’t use edits to reply to the author
How to Format
- create code fences with backticks ` or tildes ~ ```
like so
``` - add language identifier to highlight code ```python
def function(foo):
print(foo)
``` - put returns between paragraphs
- for linebreak add 2 spaces at end
- _italic_ or **bold**
- indent code by 4 spaces
- backtick escapes
`like _so_` - quote by placing > at start of line
- to make links (use https whenever possible) <https://example.com>[example](https://example.com)<a href="https://example.com">example</a>
How to Tag
A tag is a keyword or label that categorizes your question with other, similar questions. Choose one or more (up to 5) tags that will help answerers to find and interpret your question.
- complete the sentence: my question is about...
- use tags that describe things or concepts that are essential, not incidental to your question
- favor using existing popular tags
- read the descriptions that appear below the tag
If your question is primarily about a topic for which you can't find a tag:
- combine multiple words into single-words with hyphens (e.g. design-patterns), up to a maximum of 35 characters
- creating new tags is a privilege; if you can't yet create a tag you need, then post this question without it, then ask the community to create it for you
lang-py