== Why is this an issue?

Using plain string event names in even listeners is an anti-pattern; if the event is renamed, the application can start behaving unexpectedly. A constant variable should be used instead.


=== Noncompliant code example

[source,flex]
----
import flash.display.Sprite; 
import flash.events.MouseEvent; 

class ChildSprite extends Sprite 
{ 
    public function ChildSprite() 
    { 
        ...
        addEventListener("CustomEvent", clickHandler);   // Noncompliant
    } 
} 

function clickHandler(event:CustomEvent):void 
{ 
    trace("clickHandler detected an event of type: " + event.type); 
    trace("the this keyword refers to: " + this); 
}
----


=== Compliant solution

[source,flex]
----
import flash.display.Sprite; 
import flash.events.MouseEvent; 

class ChildSprite extends Sprite 
{ 
   public const CUSTOM_EVENT:String = "CustomEvent";

    public function ChildSprite() 
    { 
        ...
        addEventListener(CUSTOM_EVENT, clickHandler); 
    } 
} 

function clickHandler(event:CustomEvent):void 
{ 
    trace("clickHandler detected an event of type: " + event.type); 
    trace("the this keyword refers to: " + this); 
}
----


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

The event name "XXXX" should be defined in a constant variable.


'''
== Comments And Links
(visible only on this page)

=== on 21 Nov 2013, 10:36:29 Freddy Mallet wrote:
Is implemented by \http://jira.codehaus.org/browse/SONARPLUGINS-3271

endif::env-github,rspecator-view[]
