Листинг 4.6. wc.java
>public class wc {
> public static void main(String[] args) {
> BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
> String line;
> int lineCount = 0;
> int charCount = 0;
> int wordCount = 0;
> try {
> while ((line = in.readLine()) != null) {
> lineCount++;
> charCount += line.length();
> String words[] = line.split("\\W");
> wordCount += words.length;
> } //while
> System.out.println("wordCount = " + wordCount);
> System.out.println("lineCount = " + lineCount);
> System.out.println("charCount = " + charCount);
> } // try
> catch (IOException e) {
> System.err.println("Error:" + e.getMessage());
> } //catch
> } //main
>}
>/* Добавлено Риком */
Системы контроля исходного кода отлично запоминают, кто и когда внес то или иное исправление. Нет необходимости загрязнять код подобными ссылками. Может показаться, что такие комментарии помогают другим определить, с кем следует обсуждать данный фрагмент кода. Однако в действительности эти комментарии остаются в коде на долгие годы и со временем становятся все менее точными и актуальными.
И снова лучшим источником подобной информации является система контроля исходного кода.
В программировании редко встречаются привычки более отвратительные, чем закрытие комментариями неиспользуемого кода. Никогда не делайте этого!
>InputStreamResponse response = new InputStreamResponse();
>response.setBody(formatter.getResultStream(), formatter.getByteCount());
>// InputStream resultsStream = formatter.getResultStream();
>// StreamReader reader = new StreamReader(resultsStream);
>// response.setContent(reader.read(formatter.getByteCount()));
У других программистов, видящих закомментированный код, не хватает храбрости удалить его. Они полагают, что код оставлен не зря и слишком важен для удаления. В итоге закомментированный код скапливается, словно осадок на дне бутылки плохого вина.
Следующий код взят из общих модулей Apache:
>this.bytePos = writeBytes(pngIdBytes, 0);
>//hdrPos = bytePos;
>writeHeader();
>writeResolution();
>//dataPos = bytePos;
>if (writeImageData()) {
> writeEnd();
> this.pngBytes = resizeByteArray(this.pngBytes, this.maxPos);
>}
>else {
> this.pngBytes = null;
>}
>return this.pngBytes;
Почему эти две строки кода закомментированы? Они важны? Их оставили как напоминание о будущих изменениях? Или это «хлам», который кто-то закомментировал сто лет назад и не удосужился убрать из программы?
В 60-е годы закомментированный код мог быть действительно полезен. Но с тех пор у нас давно появились хорошие системы контроля исходного кода. Эти системы запоминают изменения в коде за нас. Нам уже не нужно закрывать их комментариями. Просто удалите ненужный код. Он никуда не исчезнет. Честное слово.