如何有效地设计一种方法,使每个条件都依赖于另一个条件

How can I efficiently design a method where each condition is dependent on another condition?

本文关键字:条件 方法 依赖于 另一个 一种 有效地      更新时间:2023-10-16

我有一个方法需要检索一个大小类型,例如,我需要返回一个字符串,上面写着"small"、"medium"或"large"。

所以我叫GetSize(int size)。但我也需要知道我想如何返回大小,我想返回"小"还是"s"。因此该方法发展为GetSize(int size, enum format)

现在我可以做一个切换案例,但它将是

switch (size)    
 {    
    case SMALL_SIZE:  
       switch(format)  
          case format::short  
          case format::long  
 }

因此,我必须在每个箱子里做一个"大小"的开关箱。我也可以将其分解并调用一个方法来获取每个大小写的格式。

这似乎是一项艰巨的工作,我这里只有3个大小的箱子,但想象一下,其他的是10个箱子。我的解决方案是最好的还是有更好的方法?

您的方法似乎可以被一个简单的二维数组所取代。

// Use actual sizes in the declaration below
static string FormattedSize[2][2] = {
    {"small", "s"}
,   {"medium", "m" }
//  and so on...
};
string GetSize(int size, enum format) {
    return FormattedSize[size][format];
}

您也可以按照以下方式进行操作:

switch(true) {
 case ((size == SMALL_SIZE) && (format == format::short)):
 case ((size == MEDIUM_SIZE) && (format == format::short)):
  return "s";
  break;
 case ((size == LARGE_SIZE) && (format == format::short)):
 case ((size == SMALL_SIZE) && (format == format::long)):
  return "m";
  break;
 case ((size == MEDIUM_SIZE) && (format == format::long)):
 case ((size == LARGE_SIZE) && (format == format::long)):
  return "l";
  break;
}