0

假设我想从堆栈中弹出对象并检查它们的状态,无论它是否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 ) ) );

我的问题是,我应该停止编写这种风格的代码并保持清晰吗?还是我应该保留它?

4

3 回答 3

4

使用长而清晰的方式将其放入一个函数中,然后在需要调用该函数时在一行中快速调用该函数。毕竟,这就是过程编程中函数的用途之一!:-)

于 2012-10-06T02:23:06.260 回答
1

如果堆栈最初为空或变为空,您的元代码将崩溃。同样作为风格问题,检查顶部元素,然后弹出或继续

while(!stackEmpry(stack) && (top(stack)->state==FUP)) { pop(stack); }
于 2012-10-06T02:31:54.803 回答
1

任何非一次性程序都会被您或其他人阅读多于写入数倍。这种编码风格需要更长的时间来编写,甚至更长的时间来阅读,运行速度不会更快且容易出错。你想达到什么目的?

在过去人们在纸上打印代码的美好时光里,你可能有一个借口,但在这个时代,视网膜显示器无处不在......

于 2012-10-06T03:04:55.813 回答