概要
変数名はプログラムの読みやすさを大きく左右します。この記事では、コードリーディング中に見つけたセンスのある変数名をご紹介します。
変数名の紹介
配列を再帰的に文字列化するメソッドArrays#deepToString(Object[] a)から呼び出されるprivateメソッドで、おもしろい変数名が使われていました。
無限ループを防ぐチェックをするためのSet<Object[]>がdejaVuという変数名でした。
private static void deepToString(Object[] a, StringBuilder buf,
Set<Object[]> dejaVu) {
// 実装は省略
}
変数名の由来
サンプルコードのように、Object[] arrayの最後の要素で自分自身を参照しているオブジェクトをつくり、Arrays#deepToStringを呼び出します。
public static void main(String[] args) {
Object[] array = new Object[] {"a", "b", null};
array[2] = array; // 無限ループの恐れあり
System.out.println(Arrays.deepToString(array));
}
このときSet<Object[]> dejaVuの効果によって[…]が出力され、無限ループを回避していました。デジャブの名前通り、「前に見たことがある」ということです。
[a, b, [...]]


コメント