Always remember that dogs have short term memory. In other words, if you are going to reward him for something good that he has done 15 minutes ago, then he would not be able to connect it.
The same goes for punishing him for doing something wrong. Thus, you should make sure to reward or punish him on a real time basis, so that he would understand it well.
Never reinforce undesirable behavior
There are times when your puppy does something bad, but funny at the same time, which may make you forget about punishing him for it.
Although funny bad habits can make you laugh, you should still make your dog aware that it is not good.
If you let him do it without punishing him, then that would be the same as reinforcing it. Never reinforce negative behavior, since that can be hard to get rid of in the future.