センスのある変数名

Java小ネタ
この記事は約2分で読めます。

概要

変数名はプログラムの読みやすさを大きく左右します。この記事では、コードリーディング中に見つけたセンスのある変数名をご紹介します

変数名の紹介

配列を再帰的に文字列化するメソッド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, [...]]

コメント

タイトルとURLをコピーしました