2009-11-23 4 views
5

Ich verstehe, dass Smart :: Comments sollte nicht in Produktionscode verwendet werden, da es ein Quellfilter ist.Welche Bedenken sollte ich haben, wenn ich Smart :: Kommentare im Entwicklungscode verwende?

Allerdings habe ich Smart::Comments in meinem Entwicklungscode verwendet und dann die "Verwendungs" -Zeile auskommentiert, bevor ich den Code an die Produktion sende.

Vorausgesetzt, dass ich es in meinem Entwicklungscode verwenden werde, worüber ich speziell besorgt sein sollte? Ich habe das Internet durchsucht und keine Gründe gefunden, die mich beunruhigen sollten, außer dass Quellfilter "eine schlechte Idee" oder "böse" sind oder dass sie niemals im Produktionscode verwendet werden sollten.

UPDATE: Ich bin jetzt eine Schlüssel Bindung in vim Sinan Unur Ansatz zu implementieren:

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

Siehe auch daotoad's Community-Wiki, das er geöffnet hat, nachdem er diese Frage beantwortet hat: http://stackoverflow.com/questions/1785852/why-are-perl-source-filters-bad-and-when-is-it-ok um sie zu benutzen. –

+0

Siehe den [2015 Perl Advent Artikel auf Smart :: Kommentare] (http://www.perladvent.org/2015/2012-12-11.html) –

Antwort

4

Quelle Filter schlecht problematisch sind, weil sie einen unvollkommenen Parser neu zu schreiben Ihren Code verwenden. Alles funktioniert gut, solange der Filter den Code verwaltet, den Sie ihm zuführen.

In dem Moment, in dem Sie etwas hinzufügen, das den Filter durchbricht, zerstört sich das gesamte System und Sie erhalten skurrile Fehler.

Quellfilter verwirren auch den Debugger, was ein Problem sein kann - wenn Sie den Debugger verwenden.

2

Ich habe keine Meinung über den Quellfilter Teil. Aber sieh dir die Zusammenfassung von Smart::Comments an. Sie mögen schlau sein, aber was Sie damit erreichen, kann kaum als "Kommentar" bezeichnet werden. Wenn Sie einen Fortschrittsbalken benötigen, gehen Sie vor, fügen Sie einen explizit hinzu. Wenn du etwas kommentieren musst, tu es so, dass der nächste, der deine Quelle liest, versteht, was du gemeint hast.

1

Smart :: Kommentare ist speziell so geschrieben, dass, wenn Sie "Smart :: Kommentare" auskommentieren, es nur Kommentare sein würde, so dass das Programm überhaupt nicht betroffen ist. Andere Module haben ernstere Probleme, z. B. wenn Sie die genaue Zeilennummer des Fehlers nicht erhalten können.

9

ziehe ich es nicht gesagt:

use Smart::Comments; 

in meinem Code. Als ich in der Tat Smart::Comments nicht verwenden, rufe ich das Skript:

$ perl -MSmart::Comments test.pl 

Auf diese Weise gibt es keine Chance Smart::Comments wird im Produktionscode verwendet werden.

+1

++! Ich habe oft S :: C angeschaut und mir gewünscht, dass ich nicht an die totale Abstinenz von Quellfiltern glaube. Dies bietet eine sichere Möglichkeit, S :: C zu benutzen - jetzt kann ich sie tatsächlich benutzen. – daotoad

+0

Danke! Guter Ansatz. –

5

Ich bin ein großer Fan von Smart :: Kommentare, und es wird in unserem Code, Entwicklung und Produktion Kopien aufgerufen. Ich verwende es nur selten für Fortschrittsbalken, hauptsächlich für Assertions und Debug-Ausgaben.

Allerdings ist die Praxis bei der Verwendung der Form zu ziehen:

use Smart::Comments -ENV; 

Wenn die Umgebungsvariable Smart_Comments nicht gesetzt ist, Smart-:: Kommentare völlig inert ist.

Das Beste aus beiden Welten.

+0

Danke! Noch eine andere Art, es zu tun. –

Verwandte Themen