3 Monkey patching can be a risky undertaking because it is not using intended extensibility points and thus may have unintended consequences or make migration to newer versions of the SDK more difficult 1 If you have different functionalities, you probably don't want every class of each to be accessible from any other functional areas. So you probably want to use this packaging: [org].[project].func1.api [org].[project].func1.restricted [org].[project].func2.api [org].[project].func2.restricted This rule makes sure that no restricted classes is accessed from outside its own function area. 1 3 3 3 50 Code behind files are tightly coupled with the view, not unit-testable, not easy to navigate the code code base and not reusable. Try using presentation model pattern, or observer pattern 3 1 1 A Binding expression is executed as soon as one of the bindable attributes changed. If a binding expression contains too many expression, there could be some performance issue. 3 3 ]]> A bindable ModelLocator could leads to performance issues due to bindings 1 The ModelLocator should be only accessible from the main application file. Then sub-models should be injected to the nested views. 3 Try split them into methods where you add commands depending on their functional area. 3 You would have something like 'productManagement.getProducts' as an event name. 3 3 3 UpdateDisplayList is called everytime a child is invalidated. So calling addChild or removeChild in this function could be really CPU consuming 1 If you needed to call 'callLater' explicitly, then you probably did not extend the correct component life cycle. 1 It is not a good practice to embed style blocks inside the MXML component. Prefer using external CSS files. 3 3 3 Empty If Statement finds instances where a condition is checked but nothing is done about it. 3 This is pointless, since event listeners cannot be attached to an object before it has been constructed, so nothing can ever hear the event 1 3 You should not dispatch a plain string. If you rename this string, you need to replace the string listener as well. Use constants instead 1 You should not listen for a plain string. If you rename this string, you need to replace the string listener as well. Use constants instead 1 1 Specifying a type will allow Flash builder and the class to have this event exposed in its API 3 Detects when a package definition contains upper case characters. 1 3 Parsley can only process metadata that is placed onto public members. 1 Each managed event should have matching [Event] metadata. 1 1 1 3 3 1 Prefer using embed filters in assets 3 3 15 1 3 3 3 A recursive style manager call can be a very expensive operation, causing parts of the UI to flicker visibly. Instead it is preferable to defer the creation of parts of the UI that depend on a runtime CSS SWF until after the SWF has been loaded. In this case a recursive call is not required. 3 Violations of this rule usually indicate that the method has too much responsibility. Try to reduce the method size by creating helper methods and removing any copy/pasted code. 3 40 A switch case statement should be either empty, or contain a break, or call another method. 3 3 3 Even if this is syntactically correct, there should not be a return type for a constructor. 3 3 200 3 Switch statements should have a default label in order to detect corner cases. 1 As a general practice, switch statement should not be used. Prefer using inheritance. It is even harder to read when switch statements are nested. 3 Switch statements are designed for complex branches, and allow branches to share treatment. Using a switch for only 2 branches is ill advised, as switches are not as easy to understand as if. In this case, it's most likely is a good idea to use a if statement 3 3 1 1 1 1 1