当前位置:  开发笔记 > 编程语言 > 正文

Switch(Case)总是错的吗?

如何解决《Switch(Case)总是错的吗?》经验,为你挑选了4个好方法。

是否存在switch(case)是战略或类似模式的良好设计选择(简单除外)的情况......



1> interstar..:

在测试基元时使用开关.(即整数或字符).

在不同类型之间进行选择时,请使用多态性.

示例:测试用户输入的字符是"a","b"还是"c"之一是交换机的作业.

测试您正在处理的对象是Dog还是Cat是多态分派的工作.

在许多语言中,如果您有更复杂的值,您可能无法使用Switch.



2> James Curran..:

首先,Simplicity通常是一个很好的设计选择.

我从来没有理解这种对开关/外壳的偏见.是的,它可以被滥用,但是,所有其他编程结构也是如此.

打开类型通常是错误的,可能应该被多态替换.打开其他东西通常都可以.



3> John T..:

首先,可读性.



4> lacker..:

当然是.很多时候,你的开关只与你整体逻辑的一小部分相关,而且仅仅因为这个小的影响而创建全新的类是错误的.

例如,假设您有一个单词数据库,用户输入另一个单词,并且您希望在数据库中找到该单词但包含可能的复数形式.你可能会写类似(C++)的东西

vector possible_forms;
possible_forms.push_back(word);
char last_letter = word[word.size() - 1];
switch (last_letter) {
  case 's':
  case 'i':
  case 'z':
    possible_forms.push_back(word + "es");
    break;
  case 'y':
    possible_forms.push_back(word.substr(0, word.size() - 1) + "ies");
    break;
  default:
    possible_forms.push_back(word + "s");
}

用策略做这件事会有点矫枉过正.


此代码目前为15行.如果其他人将其重写为1000多行,同时将其保留为单个switch语句,那就是他们的错,而不是初始switch语句的错误.
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有