Допустим, я хочу вытолкнуть объекты из стека и проверить их состояние, FUP
(лицом вверх) или нет.
Я хочу продолжать делать это, пока не достигну точки, где стек пуст или ИЛИ состояние экземпляра не обращено вверх; в этом случае мне нужно отодвинуть этот экземпляр назад и прекратить зацикливание.
Вот один из способов сделать это:
bool isfup = true;
while(pop(stack, &ins) && isfup = ins->state == FUP)
{
// continue removing elements from stack
}
if(isfup == false)
push(stack, ins);
и вот как я это делаю:
while(pop(stack, &ins) && (ins->state == FUP || (push(stack, ins) && false)));
// while( A && ( B || ( C && false ) ) );
У меня вопрос: должен ли я прекратить писать код такого рода стиля и перейти к ясности? или я должен держать это?
Поместите его в функцию, используя длинный и понятный способ, а затем вызывайте функцию в одну быструю строку, когда вам нужно ее вызвать. В конце концов, это одна из целей функций в процедурном программировании! 🙂
Ваш метакод вылетел бы, если бы стек был изначально пуст или стал пустым.
Кроме того, из соображений стиля осмотрите верхний элемент, а затем нажмите или продолжите.
while(!stackEmpry(stack) && (top(stack)->state==FUP)) { pop(stack); }
Любая не одноразовая программа будет читать вас или кого-то еще во много раз больше, чем писать. Этот стиль кодирования занимает больше времени для записи, даже больше для чтения, не работает быстрее и подвержен ошибкам. Что вы пытаетесь достичь?
В старые добрые времена, когда люди печатают код на бумаге, у вас может быть оправдание, но в наши дни и возраст, и отображение сетчатки повсюду …