[英]Is this a good practice to validate menus?
我需要顯示一個派生另一個菜單的菜單,這派生另一個菜單。 但是我正在用以下形式驗證那些菜單:(僅C標准庫)
do{
validOption = 1;
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: /* Do something */ break;
case 2: /* Do something */ break;
case 3: /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
但是在派生菜單時,我不知道是否使用相同的option
變量和validOption
標志。 我認為這不是問題,因為派生的 option
變量將被覆蓋,並且我將不需要先前的option
變量,因為該option
變量僅在特定情況下用於聯接。 現在, validOption
標志也不再是問題,因為成功案例發生時意味着validOption = 1
(不會進行更多迭代),並且它將與值為1的先前validOption
匹配(因為在這種情況下已加入) 。 這樣就不會干擾。
在派生菜單中使用相同的變量( option, validOption
)是一種好習慣嗎?
我還需要使用getint()
函數進行驗證,這使我認為,即使有必要,也可以通過實用的方式驗證菜單。
#include<stdio.h>
int main(){
int option;
int validOption;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1:
validOption = 1;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: validOption = 1; /* Another menu with the same option and validOption variables */ break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
return 0;
}
//I've put validOption = 1; within all cases just for explaining purposes
我寧願將其稱為嵌套循環,而不是派生循環。
提出您的問題:當不再需要變量的第一個值時,在循環內重用同一變量是否有效? (我是對你的問題重新表述嗎?)
是的,這是有效的。 雖然沒有什么技術上的不對的地方,我會說不 。 因為,這會引起不必要的混亂,並使代碼的可讀性變得困難,尤其是當您在同一循環中時(就像在外循環中一樣)。 隨着代碼庫的增長,它變得更加困難。 因此,我不鼓勵這種編碼實踐。
您想驗證您的整數:因為,您只要做傳遞值(到getint()
),所以使用另一個變量沒有問題。 您可以使用option1
和option2
將值傳遞給getint()
進行驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.