¿Qué hace a un buen programador OCaml?

No hay una diferencia significativa entre lo que hace que un buen programador en general y un buen programador OCaml en particular.

Debe tenerse en cuenta que la profesión de ingeniero de software tiene otros requisitos además de ser un buen programador, incluida la comunicación con el equipo y la comprensión del producto, pero no nos centremos en esto.

Las características esenciales de un buen programador o software bien escrito incluyen:

  • Código legible consistente con las mejores prácticas y convenciones para el lenguaje.
  • modularidad y componibilidad: en la medida de lo posible, cada unidad que implemente una característica particular (función, módulo, biblioteca) no debe enredarse con la implementación de otras características. Esto hace posible volver a implementar o descartar funciones o dependencias sin afectar el resto del programa.
  • minimalismo: se puede lograr que el programa sea simple de mantener y construir al hacer elecciones inteligentes y no depender demasiado. Por ejemplo, uno puede elegir usar una gran biblioteca porque uno de sus módulos es particularmente útil, pero eso no significa que sea una buena idea depender aleatoriamente de otras partes de esa biblioteca cuando no es crítico.

Al mirar el código OCaml escrito por un programador experimentado de OCaml, generalmente desconfío de los siguientes signos:

  • formato sucio, no estándar: líneas de más de 80 caracteres, identificadores que usan camelCase en lugar de minúsculas_y_colecciones, sangría incorrecta o muy inusual
  • identificadores sin sentido utilizados con poca frecuencia pero lejos de donde se definieron, por ejemplo, x
  • identificadores excesivamente largos utilizados solo localmente, por ejemplo, result_of_the_function
  • identificadores o comentarios en un idioma que no sea inglés
  • uso frecuente del estado mutable compartido (referencias, globales, cerraduras …) cuando no tiene un beneficio claro
  • uso de estructuras de datos inmutables demasiado complicadas o lentas en las que una matriz simple, un búfer o referencia sería más clara y rápida
  • El abuso de listas donde una tabla hash o un mapa sería apropiado
  • La falta de comentarios básicos que expliquen de qué trata el programa / módulo / función y dónde encaja
  • comentarios que parafrasean el código fuente
  • código repetitivo repetitivo donde una solución genérica obvia sería mejor
  • abstracción excesiva: parametrización de cosas que se instancian solo una vez y dividen una unidad lógica en múltiples fragmentos en lugar de aislar características no relacionadas (abuso de funciones y functores de orden superior)
  • ausencia de pruebas automáticas
  • falta de un comando para construir el proyecto de una sola vez

(un poco pensado por mí mismo) Creo que es importante conocer cómo se realizan y gestionan los diferentes tipos a un nivel bajo. Eso ayudaría en nuestra elección de tipos, estructura de datos y comprensión de la eficiencia del código …

More Interesting

¿Por qué los desarrolladores de software a menudo están descontentos con los probadores?

¿Cuál es el uso de la hoja de datos para desarrolladores de software incorporado?

Cómo encontrar una buena compañía de desarrollo de software

Soy un desarrollador de software que desarrolla IU con QT C ++ y conozco la programación de sistemas integrados para microcontroladores PIC. Tengo interés en explorar el desarrollo del kernel de Linux y los BSP. ¿Cuál debería elegir para mi carrera a tiempo completo dada la tendencia reciente?

¿Cuál es la empleabilidad de los graduados de desarrollo de software de TI de SAIT?

¿Cómo puede una tienda de desarrollo web personalizada pasar a sus propios proyectos o startups?

¿Por qué no hay más desarrolladores de software en el 1% superior de los que obtienen ingresos?

¿Por qué los programadores se enojan cuando haces una sugerencia sobre su producto / software?

¿Qué marco o arquitectura de software tuvo un profundo impacto en el desarrollo de su producto de software y por qué?

¿Los desarrolladores de software a menudo toman mucho tiempo para aprender nuevas habilidades técnicas?

¿Qué idioma debo aprender para el desarrollo de software? ¿He estado aprendiendo JavaScript (se recomienda) pero entiendo que JS es para diseño web?

Fui entrevistado para un puesto de desarrollador de software en una startup. Querían que tomara una prueba en línea de 10 horas de duración. ¿Tomarías la prueba?

¿Por qué algunas organizaciones proponen cantidades de tiempo tan ridículamente cortas para proyectos de desarrollo de software?

¿Cuáles son algunas de las cosas más fáciles que un desarrollador de software con menos experiencia con el que ha trabajado no pudo hacer?

¿Es cierto que debo dejar mi trabajo para aprender programación si quiero convertirme en desarrollador de software en 1 año?