2009-11-23 9 views
5

Entiendo que Smart :: Comments no se debe utilizar en el código de producción, ya que es un filtro de origen.¿Qué preocupaciones debería tener si uso Smart :: Comments en el código de desarrollo?

Sin embargo, he estado usando Smart::Comments en mi código de desarrollo y luego comentando la línea "usar" antes de enviar el código a producción.

Dado que voy a usarlo en mi código de desarrollo, ¿qué debería preocuparme específicamente? He buscado en Internet y no he encontrado ninguna razón por la que deba preocuparme, salvo que los filtros de origen son "una mala idea" o "malvados" o que nunca deben usarse en el código de producción.

ACTUALIZACIÓN: Ahora estoy usando una clave de unión en vim para implementar el enfoque de Sinan Unur:

map <Leader>c <Esc>:!perl -MSmart::Comments %<CR> 
+1

Ver también wiki de la comunidad de daotoad que abrió después de responder esta pregunta: http://stackoverflow.com/questions/1785852/why-are-perl-source-filters-bad-and-when-is-it-ok -to-use-them. –

+0

Vea el [artículo de 2015 Perl Advent sobre Smart :: Comments] (http://www.perladvent.org/2015/2015-12-11.html) –

Respuesta

4

filtros fuente son mal problemática debido a que utilizan un analizador imperfecta de reescribir el código. Todo funciona muy bien, siempre y cuando el filtro administre el código que lo alimente.

En el momento en que agregas algo que rompe el filtro, todo el sistema se autodestruye y obtienes bichos extraños.

Los filtros de origen también confunden el depurador, lo que puede ser un problema si usa el depurador.

2

No tengo ninguna opinión sobre la parte de los filtros de fuente. Pero solo mira la Sinopsis de Smart::Comments. Pueden ser inteligentes, pero con lo que termines difícilmente se los puede llamar "comentarios". Si necesita una barra de progreso, continúe, agregue una explícitamente. Si necesita comentar algo, hágalo de manera que el siguiente tipo que lea su fuente entienda lo que usted quiso decir.

1

Smart :: Comments está especialmente escrito de tal manera, que cuando comenta "use Smart :: Comments" sería solo comentarios, por lo que el programa no se ve afectado en absoluto. Otros módulos tienen problemas más serios, como cuando no podrá obtener el número de línea exacto de error.

9

prefiero no poner:

use Smart::Comments; 

en mi código. Cuando yo utilizo hecho Smart::Comments, invoco la secuencia de comandos usando:

$ perl -MSmart::Comments test.pl 

De esta manera, no hay ninguna posibilidad Smart::Comments será utilizado en el código de producción.

+1

++! A menudo he observado S :: C y deseé no haber creído en la abstinencia total de los filtros fuente. Esto proporciona una forma segura de usar S :: C; ahora puedo usarlos. – daotoad

+0

¡Gracias! Buen enfoque. –

5

Soy un gran admirador de Smart :: Comments, y se llama en todo nuestro código, copias de desarrollo y producción. Raramente lo uso para barras de progreso, principalmente para aserciones y salidas de depuración.

Sin embargo, la práctica es para tirar de él en el uso de la forma:

use Smart::Comments -ENV; 

Si los Smart_Comments de variables de entorno no está definida, inteligente :: Comentarios es completamente inerte.

Lo mejor de ambos mundos.

+0

¡Gracias! Otra forma de hacerlo. –

Cuestiones relacionadas