概要
変数名はプログラムの読みやすさを大きく左右します。この記事では、コードリーディング中に見つけたセンスのある変数名をご紹介します。
変数名の紹介
配列を再帰的に文字列化するメソッド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, [...]]
コメント