Usar patrón de objeto nulo No intentar/capturar bloques

May 01 2023
El patrón de objeto nulo es un patrón de diseño que se usa para manejar el caso cuando un objeto es nulo o indefinido. La idea básica detrás del patrón es crear un objeto nulo que tenga la misma interfaz que el objeto original pero que no haga nada cuando se llame a sus métodos.

El patrón de objeto nulo es un patrón de diseño que se usa para manejar el caso cuando un objeto es nulo o indefinido. La idea básica detrás del patrón es crear un objeto nulo que tenga la misma interfaz que el objeto original pero que no haga nada cuando se llame a sus métodos. Esto evita la necesidad de buscar objetos nulos en el código y simplifica el diseño.

Si no conocemos el patrón de objeto nulo, escribiremos un código para tratar los escenarios de error con try/catchun método como el siguiente:

La salida del código anterior es:

An error occurred creating the account: Username is required

El problema del código anterior es que: cada vez que usamos create_account, tenemos que usar try/catchpara capturar excepciones. Si tenemos que usar create_accountmuchas veces en algunos proyectos, se volverá bastante complejo de manejar.

¿Cómo resolver el problema de prueba / captura anterior?

Aquí es cuando entra en uso el patrón de objeto nulo. Ampliemos el caso anterior a un uso más práctico.

Si usamos try/catchbloque para generar excepciones:

Para usar un patrón de objeto nulo:

Después de la refactorización anterior, hemos simplificado la calculate_total_balancefunción usando un patrón de objeto nulo class NullAccount. Simplemente no necesitamos trybloques para lidiar con errores, y podemos asumir que Account.from_stringsiempre devolverá un objeto válido.

Esto permite que el código del cliente trate el objeto nulo como un objeto real, sin tener que verificar Nonelos nullvalores todo el tiempo. El objeto nulo proporciona un comportamiento predeterminado seguro y se puede utilizar como marcador de posición hasta que un objeto real esté disponible.

¿Por qué Go no tiene un patrón de objeto nulo?

En Go, es común devolver múltiples valores de una función, siendo el segundo valor un valor booleano que indica éxito o fracaso. Este patrón se llama patrón "coma-ok" o "tupla". Por ejemplo, una función que busca una clave en un mapa puede devolver el valor y un valor booleano que indique si se encontró la clave o no. Este enfoque elimina la necesidad de un patrón de objeto nulo.

Además, Go tiene un valor incorporado nil, que se puede usar para representar la ausencia o falta de un valor. Go recomienda usar este nilvalor en lugar de introducir un patrón de objeto nulo, ya que simplifica el código y reduce la complejidad.