Test94299801 2017-09-05 10:19:41

[C#] 無駄過ぎるSwitch文 このエントリーをはてなブックマークに追加

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

大学の同期のコード こんな回り道をしなくても……

//落第しているかの判定
bool failFlg = false;
//もしも一つでも30点以下の科目があればfailFlgをtrueに
var fail = scoreList.Where(a => a.Score < 30).Count() > 0;
//判定
if (fail == true)
{
    failFlg = true;
}

//failFlgによって分岐処理
switch (failFlg)
{
    case true:
        Console.WriteLine("You failed");
        failWorks();
        break; ;
    case false:
        Console.WriteLine("You passed");
        passWorks();
        break;
    default:
        break;
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(5)

#1 migimatsu 2017-09-05 11:10:04  

switch が無駄なんじゃなくて、全部が全部無駄なんじゃないかと、、、ほぼワンライナーで書けると思うぞ ^^;

#2 yuu_hara 2017-10-06 15:23:52  

Console.WriteLine(scoreList.Any(a => a.Score < 30) ? "You failed" : "You passed");

でワンライナーですねー

ちなみにこれだと落第基準が30点 未満 になるので、コメントどおり 以下 にするなら < ではなく <= です

#4 InternalServerE 2017-10-20 20:42:20  

投稿者のコードが冗長なのは同意だとして、 #2 のワンライナーもこれはこれで過剰に縮めすぎな印象はある。
人が読んで保守することに重きを置くなら、もうっちょと意味単位に分割してもよい。

#5 204504bySE 2017-12-13 13:06:38  

failWorks()とpassWorks()があるけど、それでも判定は

if(scoreList.Any(a => a.Score < 30))

で十分だし

  • Any()で済むところをWhere().Count()>0にしちゃう
  • 無用なフラグ変数
  • bool型なのにswitch

はやっぱり💩

コメント投稿には、twitter認証が必要です。

Twitter認証

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

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

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

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

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

鑑賞する »

[C] すげーちゃんと動く!

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

結合試験2日前に脱退したうんkプログラマ...

return 0;

鑑賞する »

[Java] is禁止令

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

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

// Mod yamada Start

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

鑑賞する »