arison.jp arison.jp blog - 現在をたのしく、未来をたのしむ。日常の思い出兼備忘録。

【Java】セパレートをつけるプログラムイディオム集

セパレートをつけるプログラムって結構記述することが多い。
カンマ区切り(csv)、タブ区切り(tsv)、スペース区切りとかが多い。
だいたい、最後に余分なセパレートを削除するか、初回のみセパレートを追加しない
ってやっていたんだけど、素晴らしいプログラムイディオムを知った。

何かで区切るする表現、splitter – Javaとかで学ぶ、すぐに使いたくなる洗練されたプログラムイディオム集
http://pgkiss.web.fc2.com/idiom/splitter.html

if文消しゴム – Javaとかで学ぶ、すぐに使いたくなる洗練されたプログラムイディオム集
http://pgkiss.web.fc2.com/idiom/ifRemover.html

末尾のセパレートを消す、最初のセパレートを消すという処理があるけど。

static String join(String separator, Iterable<?> list) {
    StringBuilder result = new StringBuilder();
    String delimiter = "";
    for (Object e : list) {
        result.append(delimiter);
        result.append(e.toString());
        delimiter = separator;
    }
    return result.toString();
}

最初の区切りを出力しないのではなく、最初だけ空文字列を区切りとして出力することで、if文を不要にしている。

文字列の連結の場合、空文字列を連結することは何もしないことと同じだ。

何もしないことと同等な操作をNOP(NO Operation)というが(もともとアセンブリ言語の命令)、この場合空文字列はNOPにあたる。
NOPをうまく使うことで、特別扱いしなければならないパターンを取り除きプログラムをシンプルにすることができる場合がある。

多少、処理は重たいかもしれないけど、可読性もいいし、これからはこの方法を使おうっと。

About arison

大都会岡山の南部にある玉野市生まれ。 大都会岡山のIT会社(目標は大都会No.1)でコンピュータとお客を相手に日夜格闘中。 関東出張中はグルメブログ。 基本的に遊び人のおっさん。 ライフハックとガンダム好き。ギガフロート玉野を浸透中。

11. 12月 2012 by arison
Categories: 日記, プログラミング | Tags: | Leave a comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください