`
tedeyang
  • 浏览: 326091 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

窃以为switch语句的设计是败笔

    博客分类:
  • JAVA
阅读更多

前天做到一个题,是测试java switch语句的.结果很出我意料.

 

 

public class Test {
    public static void main(String[] args) {
        char c = 'c';
        switch (c) {
        default:
        case 'a':
            System.out.println('a');
            break;
        case 'b':
            System.out.println('b');
            break;
        }
    }
}

     输出'a',这代码带着点邪气.

     再看一段,如果有case 'c'呢?

 

switch (c) {
		default:
		case 'a':
			System.out.println('a');
			break;
		case 'b':
			System.out.println('b');
			break;
		case 'c':
			System.out.println('c');
			break;
		}
   

   输出'c'.

   所有switch有两个原则:1,default语句不管放在那里都是最后才执行. 2,case/default之间是"or"的执行关系,形象点描述的话就像是一只找桃子的贪心猴子从树的分枝上一根根往下跳,不被人打一棍就舍不得放弃下一个可能的桃子,即便它已经捡到了.

 

     个人感觉switch的这种case语法本身就不属于良好设计,违反了"least surprise ",这也是为什么所有教程都淳淳告诫:记得要加break啊!这语法太违反人类直觉了.

 

     统计一下所有用到switch的代码,大概会发现case后会带着break的占绝大多数,所以更好的设计是以break作为默认行为,用"continue"告诉case需要向下连续,而不是把continue作为默认行为.

 

     有时间的话倒是可以研究一下switch语法最早是哪门语言设计出的,一路怎么演化,一定很有意思.呵呵.

     在java中为了性能考虑,switch只能对有限的类型进行判断(int,char,byte,enum和包装类)也极大限制了它的使用,大概在一些算法类的程序中才有用武之地了.

 

@see http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html

 

2
1
分享到:
评论
1 楼 skzr.org 2010-07-21  
我喜欢if多余switch

相关推荐

    C语言switch语句学习教案.pptx

    C语言switch语句学习教案 switch 语句是 C 语言中处理多路选择问题的一种更直观和有效的手段。在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。当然可以使用嵌套的 if , if else 语句来处理,但其...

    C语言switch语句 ——教学案例分析PPT学习教案.pptx

    本教案从教学目标、学情分析、教学重点和难点、教学方法和教学内容等多方面对switch语句进行了详细的教学设计。 一、教学目标 本堂课的教学目标分为三类:知识技能性目标、过程与方法目标和情感态度与价值观目标。...

    C语言switch语句 ——教学案例分析PPT课件.pptx

    主要教学目标包括掌握 switch 语句的格式、理解 switch 语句的执行过程、理解与其他语句的异同、掌握阅读、调试 switch 程序的能力、掌握 switch 语句实现多分支选择结构、领悟使用 switch 语句解决实际问题等。...

    C语言switch语句PPT课件.pptx

    C语言switch语句PPT课件 C语言switch语句是多分支选择语句,在实际应用中需要在多种情况中选择一种情况,执行某一部分语句。switch语句是C语言中处理多路选择问题的一种更直观和有效的手段。 在测试某个表达式...

    C++语言:switch语句最详细讲解.pdf

    C++语言switch语句详解 switch语句是C++语言中的一种控制流语句,用于根据不同的条件执行不同的代码块。在本文中,我们将详细介绍switch语句的执行过程、注意要点、例题讲解和作业等。 一、switch语句的执行过程 ...

    c 语言 switch 语句学习

    ### C 语言中的 Switch 语句详解 #### 一、Switch 语句的基本概念与语法结构 Switch 语句是 C 语言中的一种选择结构,主要用于实现多分支选择的功能。其基本语法结构如下: ```c switch (表达式) { case 常量...

    c语言if语句实例_C语言if语句和switch语句实例_If..._

    本篇文章将深入探讨C语言中的if语句和switch语句,这两种选择结构是控制程序流程的重要工具,使得代码可以根据不同的条件执行不同的操作。 首先,我们来详细了解一下if语句。if语句是基于条件执行特定代码块的基础...

    c语言程序设计 switch语句

    在这个程序设计实例中,我们看到一个如何巧妙使用`switch`语句的例子。 首先,程序定义了两个整型变量`k`和`x`以及一个字符变量`y`。`k`的值将根据输入的分数`x`来确定,`y`则会根据`k`的值被赋予相应的等级字母。 ...

    Golang中switch语句和select语句的用法教程

    本文主要给大家介绍了...因此,Go语言的switch语句又分为表达式switch语句和类型switch语句。 1、表达式switch语句 var name string ... switch name { case Golang: fmt.Println(Golang) case Rust: fmt.Println

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法.docx

    C语言中分支结构:if语句、if-else语句和switch语句的使用方法 C语言中分支结构是一种非常基本但非常重要的编程结构,它允许程序根据条件执行不同的代码块。在C语言中,分支结构有三种基本类型:if语句、if-else...

    switch语句,算利润

    c语言程序设计教程(第二版)谭浩强,经典例题,对于学习c语言有很大帮助

    C语言中的switch语句基本用法

    其中,表达式是switch语句的条件表达式,常量1、常量2等是switch语句的分支条件,语句1、语句2等是每个分支对应的执行语句,default是switch语句的默认分支。 switch语句的执行过程 switch语句的执行过程如下所示...

    switch语句的使用例子

    switch语句的使用例子

    switch语句通过用户输入的年龄判断年龄段并输出

    javascript,switch语句,判断年龄段

    38.java中的switch语句.zip

    38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip...

    switch语句的妙用(必看篇)

    switch语句的普通用法很简单,如下: var a = 3; switch (a) { case 1: console.log(a); break; case 2: case 3: console.log(a); break; default: break; } 这里a和case列表中从上而下逐一做比较,如果...

    switch语句

    JavaScript中的`switch`语句是一种条件控制结构,用于执行基于不同条件的多个代码块。它提供了比`if...else if...else`结构更简洁、更易读的代码编写方式,尤其在处理多分支选择时。在本练习中,我们将深入探讨`...

    switch语句大全下载

    《switch语句大全》 在编程领域,switch语句是一种常用的控制流程结构,它提供了多路选择执行的能力,尤其在处理多个可能的情况时非常高效。本文将深入探讨switch语句的使用、语法、特点以及在不同编程语言中的差异...

    C语言switch语句ppt课件.ppt

    C语言switch语句 C语言switch语句是一种多分支选择语句,用于在多种情况中选择一种情况,执行某一部分语句。switch语句的主要特点是可以根据表达式的值来选择执行的分支,且可以使用break语句来退出switch结构。 ...

    C语言switch语句教学案例分析ppt课件.ppt

    教材分析部分介绍了C语言switch语句的基本概念和结构,以及其在程序设计中的应用。学情分析部分则讨论了学生的学习基础和需求,包括学生已经学习了C语言的基本结构和基本内容、顺序结构、选择结构,并且已经学习了if...

Global site tag (gtag.js) - Google Analytics