Improve example code demonstrating Interface Segregation Principle. #377
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello. This is a useful resource.
When reading the section on the Interface Segregation Principle it occurred to me that the code section could give a stronger and clearer example. The principle is "Clients should not be forced to depend upon interfaces that they do not use." Even knowing about the existence is a dependency, and it can be avoided in this case. There is no reason for the client code to even know that animationModule exists or that DOMTraverser cares about it.
(This sort of thing happens frequently in practice; e.g. if animationModule is added to a new version of DOMTraverser, old client code will not know about it, and making it optional in this way avoids having to update those calls.)