如何处理“开关/外壳”当软件版本添加新参数时
当有新的软件版本发布并且它向 switch case
添加另一个索引时如何处理。在这种情况下,索引代表一个参数。例如,
Rel1: i = 1-5, 7(不包括 6)
Rel2: i = 1-7
for (int i = 1; i<=7;i++)
{
switch (i)
{
case 1: /*process data*/ break;
case 2: /*process data*/ break;
case 3: /*process data*/ break;
case 4: /*process data*/ break;
case 5: /*process data*/ break;
// case 6: // REL 2
case 7: /*process data*/ break;
default: break;
}
}
我实际上可以通过在这些情况之间添加 if
语句来检查吗?还有更好的主意吗?
How to handle when there is a new SW Release sometime and it adds another index to switch case
. Index represents a parameter in this case. For example,
Rel1: i = 1-5, 7 (excluding 6)
Rel2: i = 1-7
for (int i = 1; i<=7;i++)
{
switch (i)
{
case 1: /*process data*/ break;
case 2: /*process data*/ break;
case 3: /*process data*/ break;
case 4: /*process data*/ break;
case 5: /*process data*/ break;
// case 6: // REL 2
case 7: /*process data*/ break;
default: break;
}
}
Can I actually check by adding if
statement between those cases? Any better idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在生产代码中,如果我有这样的意外结果,我经常尝试捕获并记录它。
抛出异常可能是可以的,具体取决于它的处理方式。为了面向未来,设计这样的东西来优雅地处理新值通常是好的。
In production code if I have an unexpected result like this I often try to capture and log it.
Throwing an exception may be ok depending on how it's handled. For future-proofing it's usually good to design stuff like this to gracefully handle new values.
不要使用“for”循环,而是使用带有版本号生成器函数的“while”循环。
伪代码:
Instead of using a 'for' loop, use a 'while' loop with a release number generator function.
Pseudo code:
我发现看到嵌套在循环中的
switch
很奇怪......看起来你正在执行一个管道。那你为什么不简单地将 is 定义为一。
例如,一个简单的函数指针数组就可以了。您可以为每个版本定义一个这样的管道,并为要忽略的参数提供“noop”函数。
I find it very strange to see a
switch
nested within a loop...It looks like you are executing a pipe. Then why don't you simply define is as one.
For example, a simple array of pointer to functions would do nicely. You can define one such pipe per release, and provide "noop" functions for the parameters to ignore.
如果您想捕获意外的值,难道不应该将该检查放在
default
部分吗?If you want to catch unexpected values, shouldn't you put that check in the
default
part?#define
这是哪个版本,然后使用#ifdef
。#define
which release is this and then use#ifdef
.