Escribe el foso que ha pisado Go recientemente | log, cohesión y reutilización, gjson, ajuste de mentalidad

¡Continúe creando, acelere el crecimiento! Este es el 7º día de mi participación en el "Nuggets Daily New Plan · June Update Challenge", haz clic para ver los detalles del evento

Hoy, compartiré el hoyo que encontré recientemente:

Los siguientes ejemplos de código utilizan el marco GoFrame, en lo sucesivo denominado marco gf.

Formato de registro unificado

Tengo un mal hábito, ya sea que estuviera desarrollando PHP antes o desarrollando GO ahora, estoy acostumbrado a usar dump() para imprimir datos para depurar durante el proceso de desarrollo.

Aunque la depuración local es genial, sería una tontería si no puede encontrar registros en el entorno de prueba o incluso en el entorno de desarrollo, y no puede localizar fácilmente el problema.

Por lo tanto, debemos desarrollar un buen hábito de imprimir registros para los pasos clave y unificar el formato del registro.

tomar una castaña

registro de impresión

scm.Log.Info("测试的日志都打印在这里,res:%v", res)
复制代码

Un método para encapsular el registro de impresión

Especificar el directorio de impresión de registro

var Log = g.Log().Path(g.Log().GetPath() + "/scm")
复制代码

A través del g.log proporcionado por gf, junto con nuestra propia encapsulación, los registros se pueden distinguir por módulos funcionales, lo cual es conveniente para localizar problemas.

Cohesión y reutilización

El framework gf tiene un diseño: interno, es decir, métodos que solo permiten llamadas internas.

Creo que el autor diseñó internos, por un lado, por consideraciones de seguridad, y por otro lado, por la consideración de alta cohesión.

Sin embargo, no sea demasiado cohesivo.El problema que encontré hoy es cómo implementar mejor la reutilización de código.

Por lo tanto, el directorio de método público compartido se extrae del proyecto y se migra la lógica reutilizable escrita originalmente en el interno.

gjson

Encontré una clase de herramienta muy útil hoy: gjson

gjson puede leer json/xml/toml/ y otros archivos o contenido de archivo, crear un objeto y obtener el valor correspondiente al objeto a través del método get

package main

import (
   "fmt"
   "github.com/gogf/gf/encoding/gjson"
)

func main() {
   jsonContent := `{"k5":1}`
   jsonObj, err := gjson.LoadContent(jsonContent)
   if err != nil {
      panic(err)
   }
   fmt.Println(jsonObj.Get("k5"))
}
复制代码

resultado de impresión

imagen.png

cálmate

Recientemente, he estado resolviendo un problema muy vergonzoso y no he podido calmarme. Siempre pienso en qué pequeños problemas se deben causar, y siempre pienso en resolver el problema rápidamente. Sin embargo, este tipo de mentalidad de buscar una solución rápida al problema ha hecho que el problema se quede en la superficie, en vez de resolver el problema de fondo, ha ido arrastrando el progreso y haciéndolo cada vez más lento.

Resumir

Ha terminado un día inusualmente agotador, con una carga de trabajo sorprendentemente pesada.

Amigos de lejos, ¿están tan cansados ​​como yo?

Mira la barriga que ha vuelto a crecer, además de trabajar y bloguear, también deberías empezar a hacer ejercicio.

Al final

Gracias por leer y bienvenidos a todos: me gusta, favorito,moneda(concentrarse en)! ! !

8e95dac1fd0b2b1ff51c08757667c47a.gif

Supongo que te gusta

Origin juejin.im/post/7103887534299545613
Recomendado
Clasificación