Algunos consejos en varios idiomas que daría:
Preste atención a los “tipos”, incluso en idiomas que no tienen ideas sólidas de tipos. Cuando escriba funciones, sea muy consciente de los tipos que devuelve. Una función que a veces devuelve una matriz, y otras veces un solo valor, y algunas veces un nil causará errores en el futuro.
Divida el cómo y el por qué del tanto como sea posible. Por ejemplo, si estuviera creando una página de administración de la organización, donde un usuario puede agregar / eliminar / cambiar permisos, habría un puñado de clases interactuando para hacer partes del trabajo.
# Coordina el trabajo para hacer un cambio.
# Esto puede ocultar el mecanismo del cambio, potencialmente dentro de más clases (o no, depende de la complejidad).
# (actualizar columna db,
# escribir una nueva fila en una tabla de permisos,
# actualizar un servicio de terceros).
# Yo escribiría esta clase como mayormente (enteramente si es posible)
# llama a otras funciones y clases, y lógica muy simple.
UserPermission.adjust_permission (adjusting_user, target_user,: admin)
- ¿Cuál es ese hábito saludable que ha cambiado tu vida?
- ¿Qué hábitos de negocios debo cultivar?
- ¿Cuáles son algunas fallas / hábitos molestos en la composición en que incurren los compositores principales?
- ¿Cómo deshacerme del hábito de revisar mi teléfono cada 5 minutos?
- ¿Tiene algún consejo para romper con los hábitos negativos cuando se trata de interactuar con otros?
# “Puedo hacer eso” es respondido por esto
# Debería ser utilizado por adjust_permissions, pero la lógica lo haría
# ser reutilizado en la interfaz de usuario para ofrecer el botón en primer lugar
UserPermissionPolicy.new (user) .adjust_permissions? (Adjusting_user, target_user,: admin)
# Tengo que hacerle saber al usuario que ha sido ajustado
# Oh, pero tal vez su jefe también?
# Envíe una notificación de websocket para informarles del cambio.
NotifyNewPermission.send (target_user,: admin)
Hay tantas ventajas para dividir las cosas de esta manera
- terminas con un “idioma” de dominio para hablar cuando trabajas con tu aplicación. Este código de ejemplo en Ruby (y presumiblemente Rails) ahora me permite abrir una consola y forzar manualmente que ocurran ciertas cosas.
- Podría proporcionar una política de
CustomerSupport
a estas clases que sea más permisiva (para que los administradores del sitio puedan ayudar a los usuarios). - Las pruebas pueden hacer uso de estas clases para configurar los datos.
- El siguiente desarrollador puede responder más fácilmente a preguntas como: “¿Qué clase de control controla quién puede configurar a un usuario para que sea un: ¿administrador_grupo?”
Las herramientas son importantes, pero no el objetivo. Sé bueno en un editor, pero realmente no importa cuál. Aprende la línea de comandos bastante bien, pero no el nivel de gurú. Conozca las herramientas de prueba, alineación de código, control de fuente e implementación que usa lo suficientemente bien como para saber qué hacer en Google para cuando lo necesite.
El conocimiento ambiental de muchas cosas es útil. Tenga un conocimiento de 20 minutos en wikipedia de muchas herramientas, técnicas y proyectos. Por ejemplo, nunca he usado Hadoop en un proyecto real. Pero puedo decirles lo básico “por qué querría eso”. Lo mismo para estructuras de datos como CRDTs o Bloom Filters. Lo mismo para las compensaciones generales entre las bases de datos Columnar y Document. Realmente no conozco ninguno de estos en un nivel profundo, pero sé lo suficiente como para conectar mis problemas concretos con estos apéndices de conocimiento para profundizar más cuando surja.
Eso fue todo un ramillete, espero que ayude.