Thanks for the link — imho it's really hard to keep an overview of this list…

So, I'll follow the leader ;-) and delay further posts on this topic

>> Not everything can be solved with protocols (stored properties, anyone?)
> 
> Sure, it's not completely painless, but you can declare
> 
> internal protocol MyClassProtocol {
>       var foo: Bar { get set }
> }
> 
> public class MyClass: MyClassProtocol {
>       public var foo: Bar
> }
> 
> It's 1 extra line of code. You declare the contract on stored properties by 
> the protocol and just declare them on the class.
… but this single line only covers a single property in a single class, and you 
have to implement willSet/didSet in every class if you depend on this behavior.
Protocols are nice, and if support for generics is added in the future, a whole 
set of problems could be covered with those — but imho even protocols are no 
silver bullet, and there are situations where they are not the right tool.

> IMHO if you need to hide the hierarchy *that* bad, it usually points to a bad 
> design.
I don't believe in fighting developers with obscurity, so for me, it is not 
about the hiding, but about clarity:
There is no clear way to express that a certain class shouldn't be used outside 
its library without hiding all subclasses, too (well, you could write 
documentation… but no one likes documentation ;-)

Best regards,
Tino
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to