I'm guessing it will almost never have the original formatting, or variable/function names, hence there's a lot of guesswork.(is that what you mean Gan?)
Also, can you usually re-compile a program and run it the same or can there be problems?
PS: I hear Mojang is teaming up officially with the Bukkit team and they are releasing an official modding API so if I can learn enough Java this year I'm going to have to try it.