Saltar al contenido

¿Por qué usar un método público en una clase interna?

Esta es la contestación más acertada que encomtrarás dar, sin embargo mírala pausadamente y valora si es compatible a tu proyecto.

Solución:

ACTUALIZACIÓN: Esta pregunta fue el tema de mi blog en septiembre de 2014. ¡Gracias por la gran pregunta!

Existe un debate considerable sobre esta cuestión incluso dentro del propio equipo compilador.

En primer lugar, es aconsejable entender las reglas. Un miembro público de una clase o estructura es un miembro accesible a cualquier cosa que pueda acceder al tipo contenedor. Entonces, un miembro público de una clase interna es efectivamente interno.

Entonces, dada una clase interna, ¿deberían marcarse como públicos o internos los miembros a los que desea acceder en la asamblea?

Mi opinión es: marca a esos miembros como públicos.

Uso “público” para significar “este miembro no es un detalle de implementación”. Un miembro protegido es un detalle de implementación; hay algo al respecto que será necesario para hacer que una clase derivada funcione. Un miembro interno es un detalle de implementación; algo más interno a esta asamblea necesita el miembro para funcionar correctamente. Un miembro público dice “este miembro representa al keyfuncionalidad documentada proporcionada por este objeto”.

Básicamente, mi actitud es: supongamos que decido convertir esta clase interna en una clase pública. Para hacer eso, quiero cambiar exactamente una cosa: la accesibilidad de la clase. Si convertir una clase interna en una clase pública significa que también tengo que convertir un miembro interno en un miembro público, entonces ese miembro era parte de la superficie pública de la clase, y debería haber sido público en primer lugar.

Otras personas no están de acuerdo. Hay un contingente que dice que quiere poder echar un vistazo a la declaración de un miembro y saber de inmediato si se va a llamar solo desde el código interno.

Desafortunadamente, eso no siempre funciona bien; por ejemplo, una clase interna que implementa una interfaz interna aún debe tener los miembros implementadores marcados como públicos, porque son parte de la superficie pública de la clase.

Si la clase es internalno importa desde el punto de vista de la accesibilidad si marca un método internal o public. Sin embargo, sigue siendo bueno usar el tipo que usaría si la clase fuera public.

Si bien algunos han dicho que esto facilita las transiciones de internal a public. También sirve como parte de la descripción del método. Internal los métodos generalmente se consideran inseguros para el acceso sin restricciones, mientras que public Los métodos se consideran (en su mayoría) juegos gratuitos.

Mediante el uso internal o public como lo harías en un public clase, se asegura de comunicar qué estilo de acceso se espera, al mismo tiempo que facilita el trabajo necesario para hacer que la clase public en el futuro.

A menudo marco mis métodos en clases internas públicas en lugar de internas porque a) realmente no importa yb) uso interno para indicar que el método es interno a propósito (hay alguna razón por la que no quiero exponer esto Por lo tanto, si tengo un método interno, realmente tengo que entender la razón por la que es interno antes de cambiarlo a público, mientras que si estoy tratando con un método público en una clase interna, realmente tengo que pensar por qué el la clase es interna en oposición a por qué cada método es interno.

Comentarios y valoraciones del tutorial

Si te mola la idea, puedes dejar un escrito acerca de qué te ha gustado de esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *