mirror of
https://github.com/wnagrodzki/iOSProgrammingGuidelines.git
synced 2025-05-03 17:41:33 +02:00
Added "Controlling subclassing behavior" section
This commit is contained in:
parent
6deb44a0ae
commit
c6d114bf5b
1 changed files with 10 additions and 0 deletions
10
README.md
10
README.md
|
@ -6,3 +6,13 @@
|
|||
|
||||
If a method is independent of instance state it should be declared as type method, preferably by using `static` keyword (or `class` in case when the method is designed to be overridden in a subclass).
|
||||
> This is to avoid methods giving a false impression that they are dependent on the instance state while in fact they are not.
|
||||
|
||||
### Controlling subclassing behavior
|
||||
|
||||
Subclassing behavior should be designed with maximal hermetization principle in mind - choosing most restrictive access level possible.
|
||||
|
||||
Declare class `final` unless you explicitly design it to be inheritable. For non final class declare all instance members as `final` and type members as `static` except for those you explicitly design for overriding.
|
||||
|
||||
When designing a module prefer `public` for non final class unless you explicitly design it to be inheritable by external clients. For `open` class prefer `public` for members except for those you explicitly design for overriding by external clients.
|
||||
|
||||
> Every point that can be overridden increases complexity, thus it should always be a conscious choice to add it.
|
||||
|
|
Loading…
Add table
Reference in a new issue