naobot 2012-08-15 01:20:43

[Java] Java のウンコ このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

文字列と正規表現の区別がつかない Java はウンコだと思います。

// unko
String[] unko = "a.b.c.d.e".split(".");
System.out.print(unko.length);          //=> 0

// kuso
String[] kuso = "a.b.c.d.e".split("\\.");
System.out.print(kuso.length);          //=> 5

コメント(10)

#1 k5n6 2012-08-15 03:50:25  

引数に正規表現だって書いてあるじゃん。

#2 InternalServerE 2012-08-15 12:46:11  

なんというか、投稿者さんが区別の仕方を知らないだけでしょう。 ちなみに、これJavaに限らず、文字列で正規表現を表現するすべての処理系に対する宣戦布告になってませんか?

#3 math_neko 2012-08-15 14:58:58  

とりあえず投稿者は Javadoc 読んで来い

んで半年 ROM ってろ

#4 Nkzn 2012-08-16 01:54:19  

文字列としての「.」と正規表現演算子としての「.」を1つの正規表現の中で同時に使いたい場合は、どうやって書き分けたら良いと思ってるんだろう投稿者さんは。

#5 naobot 2012-08-17 01:58:06  

Java には Pattern という正規表現オブジェクトがあります。

本来正規表現を要求するなら splitPattern オブジェクトのインスタンスを要求すべきではないでしょうか。

String.splitString で正規表現を要求する事により非正規表現文字列での split の機能を失っています。

それによってウンコなコードしか書けなくなってると言いたかったのです。

ドキュメントを読めばわかると言ってる人はコメントさえ書けばソースの可読性なんてどうでもいいと言ってるのとかわらないのではないでしょうか。

split(String) と要求してるのに実際は正規表現を求めているのであれば splitRegex(String) 等メソッド名で機能要件がわかるようにてほしいところです。

#6 math_neko 2012-08-17 07:59:13  

他の人のコメントちゃんと読んでる ? 文字としての "." と正規表現演算子としての "." の区別はどうすればいいかくらいわかってるよね ? それがわかってるんならこの投稿は Java を dis ってるとしか言えない(実際そうっぽいけど)。私だって Java にケチ付けたいことはいくらでもあるが、Java で書けと言われたら Java の作法に従うしかないと思ってる。嫌なら Java じゃなくて違う言語使えばいいだけの話じゃ ?

#7 InternalServerE 2012-08-17 12:10:43  

naobotさん、言いたいことに一理あるのは分かった。なら、最初からそう伝わるように文章を練ろうよ。

#8 k5n6 2012-08-21 05:28:40  

シグニチャだけで言えばString#split(String)だけど、引数名で言えばregularExpressionとか名前が付いてるので、IDE使っている限りは十分に理解できるんじゃないかな。秀丸で書いてるとかなら別だけど。 オーバーロードがあるんだから、Patternを引数とするメソッドがあってもいいと思うんだけど、それこそPattern#splitがあるから冗長なんだよね。 ちなみに特定の文字列でsplitするようなメソッドが、昔からStringには存在しなかったよ。

#9 Verna_Velna 2012-08-21 05:47:58  

そもそもセパレータに”.”要求する仕様からしてウンコとか言うのは論点が違うか…

#10 k5n6 2012-08-21 09:43:01  

世の中には「全体を改行コードで分割して、行をカンマで分割すれば、CVSもバッチリ解析できるぜ〜」って人もいるからね。


このウンコードに臭った人は、こちらのウンコードにも臭ってます

[Java] 連番

このエントリーをはてなブックマークに追加

もはや人間が読むものではない。

...

package com.renban.erq053.czp008;

/**...

鑑賞する »

[Java] 内部的にunicodeだから日本語つかえ...

このエントリーをはてなブックマークに追加

これを書いた先輩に「英語で書きましょうよ...

class 会員 {
    private int 会員番号;
    p...

鑑賞する »

[Java] そういうオーバーライドの使い方はやめろ

このエントリーをはてなブックマークに追加

以前客先で出くわしたコードを思い出しなが...

public class MyClass extends Object{

...

鑑賞する »