Problems with Performance Enhancement Guidelines
Often break data encapsulation, thus forcing user of class to be aware of class internals; e.g., when passing a buffer into a method instead of making the buffer a class/method member
Local data structures tend to be turned into global ones, thus making changes more difficult; e.g., when turning a variable in a frequently called method into a class member; this can also endanger thread-safeness of method
If guidelines are applied making wrong assumptions about class/method usage, can lead to performance deterioration or even program incorrectness
Usually increase code size and decrease maintainability