1) Use of user validation and preferably with a control table.
2) Code should be written in the custom include and not in the enhancement.
3) In case same user exit, BADI or form routine is used for more than one changes, it is better to save the custom include in separate transports. The custom include should have the syntax 'IF FOUND'.
4) No CHECK statement should be used.
5) SAP internal tables should not be sorted in the custom logic
6) If entry is being read from the stack, please check whether the value is assigned to the field symbol or not.
7) Some form routines likes MV45AFZZ does not have 'Fixed Point arithmetic' check. Beware of that and make adjustments in your calculations
8) Unless and until required, do not give an error message from an ehancement
I will update the list if I remember more