Комментарии в коде?
Не учите меня программировать. 
Комментарии лишними не бывают.
 
// Когда я начинал это писать, только Бог и я понимали, что я делаю
// Сейчас остался только Бог

// иногда мне кажется, что компилятор игнорирует все мои комментарии

// пьян, исправить позже

// Магия. Не трогать.

/**
 * Всегда возвращает true.
 */
public boolean isAvailable() {
    return false;
}
Это не такой простой вопрос, как кажется на первый взгляд.

1. Правильно пишут выше, что не надо путать комментарии и документацию, технически оформленную в виде комментариев.

2. Если рассматривать именно комментарии, то они нужны только вот в каких случаях (по моему опыту):

а) Когда какая-то конвенция дала сбой, но вы все равно решаете не менять ее. Вы в команде договорились, что в данном проекте всегда кладете огнетушитель при входе в помещение в углу слева. Это ваша внутренняя конвенция. Однаком в одном из помещений стены оказываются оранжевого цвета и вы решаете, что на их фоне огнетушитель будет смотреться очень неприметно, и кладете его в нише, которая покрашена в другой цвет. В этом случае надо оставить комментарий, т.к. конвенция нарушена, но это не надо считать ошибкой и в комментарии следует указать причину нарушения.

б) Когда в силу обстоятельств приходится нарушить ожидаемое для всех поведение. Один из огнетушителей имеет слишком тугой курок. Его следует заменить, однако сроки поставки не позволяют вам сделать это до ближайшего релиза. Поэтому вы кладете рядом с огнетушителем трубу, которую следует использовать как рычаг, насадив на курок, и в комментарии указываете причину такого отклонения от ожидаемого поведения и метод применения workaround'а.

Все остальные случаи на мой взгляд при ближайшем рассмотрении либо укладываются в эти два, либо являются примером плохой работы.