デバッグ出力の工夫

(追記: 普通にこんな感じのクラスが標準ライブラリとかにある...)
例のコードはjavaですが、javaに限らず使えると思います。

package jp.wistery.utils;

public class Debug {

    public static enum Levels { 

	NONE(0), INFO(1), DEBUG(2), ALL(3);
	
	private int value;
	private Levels(int n){
	    this.value = n;
	}

	public int v(){
	    return this.value;
	}
    }

    public static Levels DEBUG_LEVEL = Levels.DEBUG;

    public static void tr(Object o, Levels level){
	if(level.v() <= DEBUG_LEVEL.v())
	    System.out.println(o.toString());
    }

}

こんなクラスを使うとデバッグが便利です。
使う側はこんなん

package	jp.wistery.hogehoge;

import static jp.wistery.utils.Debug.tr;
import static jp.wistery.utils.Debug.Levels;

public class Main {

    public static void main(String[] args){

	Debug.DEBUG_LEVEL = Levels.DEBUG; // デバッグ情報まで表示しよう...      

        tr("必ず必要な出力", Levels.NONE); // 表示される.                       
        tr("まあまあ大事な出力", Levels.INFO); // 表示される.                   
        tr("デバッグ出力", Levels.DEBUG); // 表示される.                        
        tr("くぁwせdrftgyふじこlp", Levels.ALL); // 表示されない.      
    }

}