Skip to main content

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.

Required fields*

8
  • 2
    -1 because this answer asserts that the lack of a scientific proof or rigid definition for these principles invalidates their usefulness... but +1 for "... qualified enough to distinguish when each principle applies and how to interpret omitted definitions, by that point I am surely qualified enough to make design decisions without refering to these principles at all." Commented Oct 20 at 10:12
  • "LSP is not a principle," LSP stands for 'Liskov Substitution Principle'. Literally, your statement reads as "[the] Liskov Substitution Principle is not a principle". Is that really what you mean here? Commented Oct 21 at 16:49
  • @JimmyJames yes, read the principle - it DEFINES what a SUBTYPE is. Therefore it is a definition. At best is a principal definition, or a principle of definition. Commented Oct 22 at 16:41
  • @Basilevs So you are saying the LSP is not a principle, but a definition of a principle. I'm not sure how that distinction is useful. It's kind of like saying that 'bird' is not a bird but a word that describes a bird. Commented Oct 22 at 19:06
  • 3
    When people say "are you following the LSP" about a Java program, they are meaning something along the lines of "when you are using Java's nominal subtyping, you'd better be careful that it matches up with behavioural subtyping", which is a principle, not a definition. Commented Oct 23 at 16:08