[webkit-dev] Terminology for giving up ownership: take, release, move

Maciej Stachowiak mjs at apple.com
Mon Sep 5 16:22:07 PDT 2016


> On Sep 5, 2016, at 3:30 PM, Dan Bernstein <mitz at apple.com> wrote:
> 
>> 
>> On Sep 5, 2016, at 10:13 AM, Darin Adler <darin at apple.com> wrote:
>> 
>> Hi folks.
>> 
>> WebKit has some critical functions that involve asking an object to give up ownership of something so the caller can take ownership.
>> 
>> In the C++ standard library itself, this is called move, as in std::move.
>> 
>> In WebKit smart pointers, we call this operation release, as in RefPtr::releaseNonNull and String::releaseImpl.
>> 
>> In WebKit collections, we call this operation take, as in HashMap::take and ExceptionOr::takeReturnValue.
>> 
>> The release vs. take terminology is distracting to my eyes. The verb “take" states what the caller wishes to do, and the verb “release” states what the caller wants the collection or smart pointer to do.
> 
> This can be addressed by renaming take to give (hey, it’s right there in the subject).

It's logical but reads perhaps a little strangely:

Value& = map.give(key)
X* = x_ref.give()

 - Maciej

> 
>> My first thought was be to rename the take functions to use the word release instead, but I fear it might make them harder to understand instead of easier and clearly it would make them longer.
>> 
>> Does anyone have other ideas on how to collapse WebKit project terminology down so we don’t have three different single words that are used to mean almost the same thing?
> 
> Rename release to give, too?
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
> https://lists.webkit.org/mailman/listinfo/webkit-dev <https://lists.webkit.org/mailman/listinfo/webkit-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20160905/52f674ea/attachment.html>


More information about the webkit-dev mailing list