Estoy refactorizando un sitio web PHP OOP heredado.
Estoy tan tentado de comenzar a usar 'final' en las clases para " make it explicit that the class is currently not extended by anything
". Esto podría ahorrar mucho tiempo si vengo a una clase y me pregunto si puedo cambiar el nombre / eliminar / modificar una protected
propiedad o método. Si realmente quiero extender una clase, puedo eliminar la palabra clave final para desbloquearla y extenderla.
Es decir, si vengo a una clase que no tiene clases para niños, puedo registrar ese conocimiento marcando la clase como final. La próxima vez que vaya, no tendría que volver a buscar la base de código para ver si tiene hijos. De este modo se ahorra tiempo durante las refactorizaciones.
Todo parece una idea sensata para ahorrar tiempo ... pero a menudo he leído que las clases solo deben hacerse 'finales' en ocasiones raras / especiales.
Tal vez arruina la creación de objetos simulados o tiene otros efectos secundarios en los que no estoy pensando.
¿Qué me estoy perdiendo?