Why is it a bad idea to filter by zeroing out FFT bins?

It's very easy to filter a signal by performing an FFT on it, zeroing out some of the bins, and then performing an IFFT. For instance:

t = linspace(0, 1, 256, endpoint=False)
x = sin(2 * pi * 3 * t) + cos(2 * pi * 100 * t)
X = fft(x)
X[64:192] = 0
y = ifft(X)


The high frequency component is completely removed by this "brickwall" FFT filter.

But I've heard this is not a good method to use. Why is it generally a bad idea? Are there circumstances in which it's an ok or good choice?

-