[swift-evolution] Final by default for classes and methods

Kevin Ballard kevin at sb.org
Mon Dec 21 19:19:25 CST 2015

On Mon, Dec 21, 2015, at 11:26 AM, Jordan Rose via swift-evolution wrote:
>> On Dec 20, 2015, at 3:40 , Tino Heth via swift-evolution <swift-
>> evolution at swift.org> wrote:
>>> Frankly, I think having `final` in the language at all is a mistake.
>>> While I agree that we should prefer composition to inheritance*,
>>> declaring things final is hubris. The only reasonable use case I've
>>> seen is for optimization, but that smacks of developers serving the
>>> compiler rather than the converse. Bringing an analog of
>>> NS_REQUIRES_SUPER to Swift would be most welcome; that's as far as
>>> I'd go down the path of dictating framework usage.
>> I really like the direction this discussion has taken ;-): Is there
>> any counter argument beside performance (which imho should always be
>> seen under the aspect of premature optimization) that speaks against
>> making NS_REQUIRES_SUPER the default behavior?
> I personally don't like this but I can't put my finger on why.
> Obviously there are some things where you really don't need to call
> super (mostly abstract methods), but you just said "default", which
> implies that we could have an opt-out attribute.
> I will say, however, that making NS_REQUIRES_SUPER the default for
> overridable methods is separable from deciding which methods are
> overridable by default. Making sure the base method is called isn't
> really the same as knowing the base method is *all* that's called.

NS_REQUIRES_SUPER as the default is a bad idea. There's a big difference
between methods where you SHOULD call super and methods where you MUST
call super, and NS_REQUIRES_SUPER is meant for the latter case. The
problem with using it where you simply SHOULD call super is there's
occasionally a good reason to explicitly not call super, but there's no
way to suppress the warning in that case (and no obvious syntax to
propose for that). In addition, the cases where you MUST call super are
really extremely rare.

-Kevin Ballard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151221/d1c447a1/attachment.html>

More information about the swift-evolution mailing list