> If you have a ParentClass and a SubClass, and the ParentClass is sealed while 
> the SubClass is subclassable. What happens? No matter how this question is 
> answered, I don't like the answer. (compile error => bad. || make it as the 
> user wishes => bad; what do we gain by letting ParentClass remain sealed? || 
> make ParentClass implicitly subclassable too => bad.)
I'm happy that there are not only supporters for this proposal, but imho the 
example is no compelling argument:
With no doubt, I'd expect I can subclass only SubClass — like I can't 
instantiate an abstract class, which is just fine for its children.
ParentClass might do some dangerous things that don't happen in SubClass, so 
there might even be a use-case (but imho it would be better if I could mark 
ParentClass as internal in this situation).

But imho there is another aspect I haven't read about yet:
"final by default" would have had direct impact on any developer, while this 
proposal merely changes things for those who create libraries…
So, the question is: How will those be build?

If you live in a world of secrets and non-disclosure, I can understand that 
sealed is desirable — but that's not the future I want to see, and github is a 
good indication that others share this opinion.

If you share the sympathy for Open source, the two scenarios are as follows:
We stick with "open by default"; users of libraries will use them in ways that 
the creator hasn't thought of before, and bugs will show up.
But: We know how to deal with bugs, that's our job! So in the best case, we 
find the reason for the bad behavior, create a pull request, and everyone is 
happy.

With "sealed by default", the situation changes:
Users are protected from some simple bugs, but nonetheless, they'll encounter 
situations where the library doesn't do exactly what they want.
So, you take a look at the source, find the problem, and fix it.
It's no bug at all, it's just a tiny degree of freedom that is missing because 
it wasn't important to the author.
You can create a pull request as well, but it doesn't offer a real improvement 
to the author, who is already busy with dozens of similar requests by other 
users -> you end up with a custom branch with all the housekeeping associated 
with it.

So overall, I'm quite sure that the proposal won't improve software quality, 
but rather degrade it.

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

Reply via email to