Both sides previous revisionPrevious revisionNext revision | Previous revision |
rfc:deque_straw_poll [2022/01/11 18:13] – tandre | rfc:deque_straw_poll [2022/01/26 14:43] (current) – tandre |
---|
====== Straw poll: Naming pattern to use for Deque ====== | ====== Straw poll: Naming pattern to use for Deque ====== |
* Version: 0.2 | * Version: 0.3 |
* Date: 2022-01-05 | * Date: 2022-01-05 |
* Author: Tyson Andre, tandre@php.net | * Author: Tyson Andre, tandre@php.net |
* Status: Under Discussion | * Status: Closed |
* First Published at: http://wiki.php.net/rfc/deque_straw_poll | * First Published at: http://wiki.php.net/rfc/deque_straw_poll |
| |
* ''\Collections\Deque'' - seems like a reasonable choice of name for collections (Deque, and possible future additions such as Vector, Set, Map, Sorted Sets/Maps, etc. https://wiki.php.net/rfc/namespaces_in_bundled_extensions also allows using sub-namespaces and that may be used for things that aren't strictly collections, e.g. ''Collections\Builder\SomethingBuilder'' or functions operating on collections. | * ''\Collections\Deque'' - seems like a reasonable choice of name for collections (Deque, and possible future additions such as Vector, Set, Map, Sorted Sets/Maps, etc. https://wiki.php.net/rfc/namespaces_in_bundled_extensions also allows using sub-namespaces and that may be used for things that aren't strictly collections, e.g. ''Collections\Builder\SomethingBuilder'' or functions operating on collections. |
| |
* ''\SplDeque'', similar to datastructures added to the Spl in PHP 5.3. \\ (I don't prefer that name because SplDoublyLinkedList, SplStack, and SplQueue are subclasses of a doubly linked list with poor performance, and this name would easily get confused with them. Also, historically, none of the functionality with that naming pattern has been final. \\ However, good documentation (e.g. suggesting *Deque instead where possible in the manual) would make that less of an issue.) \\ \\ See https://wiki.php.net/rfc/deque#lack_of_name_prefix (and arguments for https://externals.io/message/116100#116111) | * ''\SplDeque'', similar to datastructures added to the Spl in PHP 5.3. \\ (I don't prefer that name because SplDoublyLinkedList, SplStack, and SplQueue are subclasses of a doubly linked list with poor performance (accessing the offset in the middle of a linked list requires traversing half the linked list, for example), and this name would easily get confused with them. Also, historically, none of the functionality with that naming pattern has been final. \\ However, good documentation (e.g. suggesting *Deque instead where possible in the manual) would make that less of an issue.) \\ \\ See https://wiki.php.net/rfc/deque#lack_of_name_prefix (and arguments for https://externals.io/message/116100#116111) |
| |
While there is considerable division in whether or not members of internals want to adopt namespaces, | While there is considerable division in whether or not members of internals want to adopt namespaces, |
Those would differ from existing classes in the spl in several ways: | Those would differ from existing classes in the spl in several ways: |
| |
* Be final classes and avoid unpredictable behaviors. Extensibility has been a cause of performance issues and unexpected bugs historically, and makes code harder to reason about. | * Be final classes (or have final methods when extensibility is needed for core functionality) and avoid unpredictable behaviors. Extensibility has been a cause of performance issues and unexpected bugs historically, and makes code harder to reason about. \\ For example, [[rfc:deque#benchmarks|Deque would be memory and time efficient compared to SplDoublyLinkedList]] |
* Forbid dynamic properties. | * Forbid dynamic properties. |
* [[rfc|deque#benchmarks|Deque would be memory and time efficient compared to SplDoublyLinkedList]] | |
| |
===== Discussion ===== | ===== Discussion ===== |
| |
===== Vote ===== | ===== Vote ===== |
| |
| Voting started on 2022-01-12 and ended on 2022-01-26. |
| |
This vote will influence the name choice for the [[rfc:Deque|Deque RFC]] | This vote will influence the name choice for the [[rfc:Deque|Deque RFC]] |
| |
0.2: Fix description of Collections\Deque naming choice in the introduction. | 0.2: Fix description of Collections\Deque naming choice in the introduction. |
| 0.3: Change introduction sections |