如何有效地设计一种方法,其中每种情况都依赖于另一种情况?

时间:2012-03-08 14:26:01

标签: c++

我有一个需要检索大小类型的方法,例如我需要返回一个“小”,“中”或“大”的字符串。

所以我打电话给GetSize(int size)。但是我也需要知道我想要返回的大小,我想要返回“小”还是我想要返回“s”。因此,该方法增长到GetSize(int size, enum format)

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

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

所以我必须在每个案例中为“大小”做一个开关案例。我也可以将其分解并调用一种方法来获取每种大小的格式。

这似乎很多工作,我这里只有3个大小的案例,但想象其他的是10个案例。我的解决方案是最好的还是有更好的方法?

2 个答案:

答案 0 :(得分:3)

看来您的方法可以用简单的二维数组代替。

// 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];
}

答案 1 :(得分:0)

您还可以采取以下措施:

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;
}