In addition to the above mentioned cases we can also include some more like:
1. If sort component is used and the sort keys are same for the next sort component which follows after 2 or 3 components then instead of using sort component again it is preferable to use Sort within Groups component mentioning thise keys as major keys and other keys as minor keys. in this case it assumes that major keys are already sorted and it need sto sort only on minor keys.
eg: sort-1 component uses keys a b c and 2nd sort component after 2 - 3 components (in the same flow) uses keys a b e f. in that case use sort within groups in the 2nd case keeping a b as major keys and e f as minor keys.
2. when splitting records into more than two flows prefer Reformat rather than Broadcast component.
3. For joining records from 2 flows use Concatenate component only when there is a need to follow some specific order in joining records. If no order is required then it is preferable to use Gather component.
4. Instead of too many Reformat component consecutively one after the other use output indexes parameter in the first Reformat component and mention the condition there. For detailed information on this concept refer Help.