- From: Takeshi Yoshino <notifications@github.com>
- Date: Wed, 13 Apr 2016 23:53:15 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Message-ID: <whatwg/streams/issues/437@github.com>
I'd like to write down a clear well-discussed guidance for at which point we factor out logic and for what purpose.
- make it clear which point is defining semantics and which point is left up to implementors of the API
- Example: `ReadableStreamAddReadIntoRequest()` (ones listed in the block with the comment "// ReadableStream API exposed for controllers")
- allow optimized invocation with the following logic skipped
- skip brand checking
- Example: the `if (IsReadableStream(this) === false)` block in `ReadableStream.getReader()`
- argument validation
- Example: `read(view)` with non typed array `view`
- argument parsing
- Example: calling `AcquireReadableStreamBYOBReader()` directly than calling `getReader()` (only when the user is sure that it's byte stream)
- state checking
- Example: calling `ReadableStreamDefaultReaderRead()` directly than calling `read()`
- Example (no case): `ReadableStreamDefaultReaderRead()` checks `stream._state` in itself as it's less common that the user is sure in which state the stream is.
- Example: calling `ReadableStreamDefaultControllerClose()` directly than calling `close()`. The user can know unsolicited closure by listening to cancel() call on the underlying source.
- result packing
- Example: calling `ReadableStreamTee()` directly than calling `tee()`
- readability and code simplification
---
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/issues/437
Received on Thursday, 14 April 2016 06:53:42 UTC