# QueueRingBuffer - double checking for isEmpty in dequeue

**URL:** <https://forums.kodeco.com/t/queueringbuffer-double-checking-for-isempty-in-dequeue/47669>\
**Category:** Data Structures & Algorithms in Swift\
**Created:** [August 29, 2018, 10:26pm UTC](https://forums.kodeco.com/t/queueringbuffer-double-checking-for-isempty-in-dequeue/47669 "2018-08-29T22:26:29Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![steryokhin](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/steryokhin/32/79544_2.png) [@steryokhin](https://forums.kodeco.com/u/steryokhin)\
**Post date:** [August 29, 2018, 10:26pm UTC](https://forums.kodeco.com/t/queueringbuffer-double-checking-for-isempty-in-dequeue/47669/1 "2018-08-29T22:26:30Z")

</div>

Hello,

Method dequeue in QueueRingBuffer can be optimised.  
Because `read` from `RingBuffer` does a check for `isEmpty` and returns nil if the buffer is empty.

So, original implementation:

```auto
public mutating func dequeue() -> T? {
    return isEmpty ? nil : ringBuffer.read()
}

```

Can be simplified to:

```auto
public mutating func dequeue() -> T? {
    return ringBuffer.read()
}

```

Thanks for the great book!  
Regards, Sergey

---

<div class="post-metadata">

**Author:** ![shogunkaramazov](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/shogunkaramazov/32/108826_2.png) [@shogunkaramazov](https://forums.kodeco.com/u/shogunkaramazov)\
**Post date:** [August 31, 2018, 3:32am UTC](https://forums.kodeco.com/t/queueringbuffer-double-checking-for-isempty-in-dequeue/47669/2 "2018-08-31T03:32:48Z")

</div>

@steryokhin Thank you for the heads up - much appreciated!
