Сжимая код?

Допустим, я хочу вытолкнуть объекты из стека и проверить их состояние, 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 ) ) );

У меня вопрос: должен ли я прекратить писать код такого рода стиля и перейти к ясности? или я должен держать это?

0

Решение

Поместите его в функцию, используя длинный и понятный способ, а затем вызывайте функцию в одну быструю строку, когда вам нужно ее вызвать. В конце концов, это одна из целей функций в процедурном программировании! 🙂

4

Другие решения

Ваш метакод вылетел бы, если бы стек был изначально пуст или стал пустым.
Кроме того, из соображений стиля осмотрите верхний элемент, а затем нажмите или продолжите.

while(!stackEmpry(stack) && (top(stack)->state==FUP)) { pop(stack); }
1

Любая не одноразовая программа будет читать вас или кого-то еще во много раз больше, чем писать. Этот стиль кодирования занимает больше времени для записи, даже больше для чтения, не работает быстрее и подвержен ошибкам. Что вы пытаетесь достичь?

В старые добрые времена, когда люди печатают код на бумаге, у вас может быть оправдание, но в наши дни и возраст, и отображение сетчатки повсюду …

1