Fantom_JAC 2012-09-04 17:35:42

[Java] 何を想定していたのか このエントリーをはてなブックマークに追加

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

これでコンパイルエラーにならない方もアレなんですけど。

if (hoge == null) {
    // HogeHoge
} else if (hoge != null) {
    // FugaFuga        
} else {
    // WTF
}

コメント(9)

#1 Verna_Velna 2012-09-05 03:20:21  

コンパイラはロジックのエラーは関知しないからな仕方ない。

#2 InternalServerE 2012-09-05 03:52:43  

Java問わず、これをエラーと検知してくれるコンパイラってあるんだろうか。

#3 math_neko 2012-09-05 04:02:14  

コンパイラに罪はない

#5 migimatsu 2012-09-05 04:10:49  

絶対に入る事のないブロックがありまっせ、って指摘する lint みたいなのは結構あるような

#6 math_neko 2012-09-05 04:14:10  

まぁ eclipse とか何らかの IDE 使ってれば「このブロック入らんぜ ?」って警告出してくれるんだけどな。テキストエディタでベタ打ちしてたら…気づけよw

#7 InternalServerE 2012-09-05 12:46:10  

null or not null程度なら、ある程度「パターンマッチ」で拾える世界だけれど、

if - elif - ... の羅列からデッドコードを「まじめに」検出しようとすると、 命題論理やら集合論に基づく解析を力いっぱいぶん回すことになるわけです。

例えば、以下のようなコード。

if (n > 0) {
    System.out.println("I'm positive.");
} else if (n < 0) {
    System.out.println("I'm negative.");
} else if (n == 0) {
    System.out.println("I'm zero.");
} else {
    System.out.println("I'm dead.");
}

↑の場合、最後のelseがデッドなことは、理論上静的解析のみで判別できるわけですが、 これを本当に検出してくれるコンパイラやコード検査ツールの類が、果たして世の中にある かなぁ、と。

もしあったとして、それは本当に嬉しいのだろうか、っていう視点もありんすね。 コンパイルよりも、むしろ検出に割くCPUリソースのほうが多くなっちゃったりしたら。。

#8 Temarin_PITA 2012-09-16 12:00:03  

C#+VisualStudioなら絶対に到達できないコードがあると 警告なり注意なり出てくる。

#9 jkr_2255 2013-03-01 13:02:43  

InternalServerE さんの 2012-09-05 21:46:10 のだけど、nがNaNだったら…なんてことを考えてしまった。


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

[Java] is禁止令

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

ウンコードの趣旨とは違い、レビューで指摘...

// Mod yamada Start

// 一般的に考えて真偽値を返すメ...

鑑賞する »

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

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

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

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

鑑賞する »

[Java] フルHD推奨。

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

画面の左側がわりと無駄な気がします。

public int hoge(){
    int result = 0;
...

鑑賞する »