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
3
15
The Just-In-Time compiler does not compile constructors. Make them as lightweight as possible, or move the complexity of the code to a method called by the constructor. Then the complexity will be compiled by the JIT.
3
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
20
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