jlebar added a comment.

Alexey, it seems that you're asking for "final" on all classes that are not 
inherited from.  Forgive my ignorance, but would you mind pointing me to the 
document that talks about our position on "final" in LLVM source?  I don't see 
it in the style guide, but I may be missing something.

The style guide does talk a good bit about writing concise and generally 
not-misleading code.  My concern is that adding "final" everywhere paints an 
inaccurate picture and will mislead readers.  Specifically, "final" is useful 
as a signal to readers that a class cannot safely be inherited from.  "Don't 
even think about it, buster."  But here we're adding "final" to a lot of 
classes that, as far as I can tell, aren't distinctive except in that they have 
no subclasses today.  The problem with this is that, if we use "final" in this 
way, it dilutes the first "don't even try" meaning.  Now when I see a class 
with "final" that I want to subclass, I'm just going to rip the "final" off, 
because chances are, I can do so safely.  Now "final" does not serve as a 
warning to me that I shouldn't do this.

Sorry to focus on a superficial issue, but I think this really does matter for 
usability.


http://reviews.llvm.org/D18172



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to