From: rafaelfranca Date: 2022-03-10T03:11:53+00:00 Subject: [ruby-core:107813] [Ruby master Feature#18618] no clobber def Issue #18618 has been updated by rafaelfranca (Rafael Fran��a). Isn���t this the same idea as final methods in other languages like Java? There is an implementation for this https://github.com/joker1007/finalist. Support for final methods would allow libraries and application developers to clearly communicate what methods of a class can be overridden and which ones should not. Active Record objects are a good example. If someone defines a method called ���create_record��� they will be in trouble and the library could mark that method as final to avoid that mistake. Override can be paired with final to allow the users to explicitly tell they are aware they are overriding a final method. Although, in that case the name ���final��� doesn���t make much sense. ---------------------------------------- Feature #18618: no clobber def https://bugs.ruby-lang.org/issues/18618#change-96743 * Author: ed_ (Ed Mangimelli) * Status: Open * Priority: Normal ---------------------------------------- Sometimes I want to be certain I'm not clobbering/masking a method: ``` class Dog def bark 'bark!' end end class Poodle < Dog raise if method_defined? :bark def bark 'bow-wow' end end ``` I propose creating a shorthand. Maybe something like: ``` class Dog def bark 'bark!' end end class Poodle < Dog ncdef bark # "no clobber" def 'bow-wow' end end => # ``` This would be useful in scenarios where subclassing a class (or including a mixin) ***you don't own*** is common practice --for instance, subclassing `ApplicationRecord` for your model in Rails. I agree that `ncdef` is pretty ugly. Maybe `def!` -- https://bugs.ruby-lang.org/ Unsubscribe: