¿Existen prácticas comunes para comentar las expresiones regulares: comentarios en línea que hacen referencia a diferentes partes de RegEx o comentarios generales para todas las expresiones?
documentation
coding-style
comments
m0nhawk
fuente
fuente
Respuestas:
En mi opinión, una buena práctica es establecer de manera concisa en los comentarios cuál es la idea general de la expresión regular. Esto ahorra otros desarrolladores (o, a veces usted mismo) la molestia de copiar y pegar la expresión regular en un programa de análisis como RegExr , sólo para entender lo que hace.
fuente
Esta es una respuesta específica del idioma, pero no se indica ningún idioma en la pregunta.
El libro "Sumérgete en Python" sugiere implementar comentarios usando expresiones regulares verbosas :
Ejemplo:
Fuente y más detalles aquí
Este método tiene una pequeña desventaja de que la persona que llama debe saber que el patrón está escrito en un formato detallado y llamarlo en consecuencia.
fuente
re.compile
en el punto donde define su patrón y solo almacenar el objeto resultante. De esa manera, los indicadores de compilación de patrones (incluidosre.VERBOSE
) no necesitan separarse del patrón en sí.#
si estoy usando la bandera detallada? Por cierto: los enlaces de origen parecen estar inactivos.#
puede coincidir literalmente cuando está dentro de una clase de caracteres:[#]
(fuente: docs.python.org/3/library/re.html#re.X )Por lo general, escribiré una expresión regular y no explicaré las piezas individuales de la expresión regular, sino más bien cuál es su propósito. Eso es lo que y por qué. Esto es un poco como preguntar "¿Cómo deberían ser mis comentarios?" a lo que uno diría " No escriba lo que está haciendo el código, escriba por qué el código está haciendo lo que hace "
A menos que esté tratando de enseñarle a alguien sobre expresiones regulares a través de comentarios en código, no creo que explique qué hará cada pieza individual. Al trabajar con otros programadores, puede asumir con seguridad que uno conocería algo como expresiones regulares globales.
fuente
Supongo que realmente depende de cómo estés armando la expresión regular. En general, creo que sería una mala idea poner comentarios dentro de la cadena de expresiones regulares en sí (no es posible en la mayoría de los escenarios, que yo sepa). Si realmente necesita comentar partes específicas de una expresión regular (¿está tratando de enseñarle a alguien?), Divida cada fragmento en cadenas separadas en sus propias líneas y comente cada línea utilizando el proceso normal de comentarios para su lenguaje de programación. De lo contrario, la respuesta de pleinolijf es bastante buena.
ejemplo:
fuente
Por lo general, defino una constante de cadena cuyo nombre describe el propósito general de la expresión regular.
Por ejemplo:
Puede agregar un comentario sobre esta constante para darle una descripción, pero generalmente el nombre de la constante debería ser suficiente.
fuente
En algunos escenarios, los desarrolladores pueden estar utilizando expresiones regulares para hacer coincidir el texto fuera de su dominio típico. Los desarrolladores originales pueden haber pasado por muchas iteraciones capturando varios casos extremos que solo podrían haberse descubierto a través de ese proceso iterativo. Por lo tanto, los desarrolladores posteriores pueden no estar al tanto de muchos de los casos límite que los desarrolladores originales trataron, incluso si están al tanto del caso general.
En casos como estos, puede valer la pena documentar ejemplos de las variaciones. La ubicación de esta documentación puede variar según la cantidad (por ejemplo, no necesariamente en el código).
Una forma de abordarlo es asumir que los futuros desarrolladores solo tendrán conocimientos básicos, como el funcionamiento de las expresiones regulares, pero ningún conocimiento que usted (1) haya tenido antes del desarrollo de las expresiones regulares que no necesariamente serían conocidas por el futuros desarrolladores o (2) conocimiento que adquirió durante el desarrollo (por ejemplo, casos extremos que se descubrieron).
Por ejemplo, si durante el desarrollo dices algo como "Oh, no sabía que X podría tomar esta forma", entonces vale la pena documentar eso (y tal vez la parte de la expresión regular que maneja esa variación).
fuente
Los comentarios deben agregar información útil que no sea obvia en el código.
Hay pocas aplicaciones que necesiten cada último ciclo, si está haciendo coincidir patrones con conjuntos de datos masivos, entonces quizás haya una mejor manera, tal vez no, pero para la mayoría de las cosas, el tiempo de ejecución adicional no es tan importante.
Y recuerde que la próxima persona en encontrar su código y corregir un error podría ser usted dentro de seis meses y no hay forma de que recuerde lo que se suponía que debía hacer.
fuente
Extraiga el RegEx en una clase separada en un con un nombre significativo. Luego documentaría el código con pruebas automatizadas.
Esto asegurará
Naturalmente, su clase puede albergar varias expresiones regulares.
fuente