Repository navigation
WeakMap and WeakSet - #463
Conversation
gabifs
left a comment
There was a problem hiding this comment.
Oi @diogoosz, obrigado pela tradução! Ficou bem fluida no geral. Deixei algumas sugestões, a maioria sobre termos em inglês que poderiam ser traduzidos e um ajuste de sentido no enunciado da primeira tarefa. Nada que bloqueie, mas acho que deixam o texto mais consistente.
| // therefore it won't be garbage-collected | ||
| // we can get it as array[0] | ||
| // o objeto anteriormente referenciado por john está guardado dentro do array, | ||
| // por isso ele não será coletado pelo garbage collector |
There was a problem hiding this comment.
"garbage collector" aparece em várias partes deste artigo (linhas 36, 41, 59, 104, 116, 125, 152, 213, 244 e 291) e também em 02-recipients-when-read/task.md:19. As diretrizes de tradução pedem para evitar palavras estrangeiras quando existe um termo em português, e o capítulo linkado no começo do artigo (info:garbage-collection) se chama "Coleta de lixo". Que tal usar "coletor de lixo"?
| // por isso ele não será coletado pelo garbage collector | |
| // por isso ele não será removido pelo coletor de lixo |
Nas outras ocorrências, "coletado pelo coletor de lixo" fica repetitivo; "removido pela coleta de lixo" ou "removido da memória pela coleta de lixo" soam mais naturais.
| ``` | ||
|
|
||
| Now, if we use an object as the key in it, and there are no other references to that object -- it will be removed from memory (and from the map) automatically. | ||
| Agora, se usamos um objeto como chave nele, e não existe mais nenhuma outra referência a esse objeto -- ele será removido da memória (e do map) automaticamente. |
There was a problem hiding this comment.
"map" e "set" aparecem como substantivos comuns no texto (linhas 80, 93, 125 e 252, e 01-recipients-read/solution.md:30). Sugiro usar o nome do tipo em código ou traduzir:
| Agora, se usamos um objeto como chave nele, e não existe mais nenhuma outra referência a esse objeto -- ele será removido da memória (e do map) automaticamente. | |
| Agora, se usamos um objeto como chave nele, e não existe mais nenhuma outra referência a esse objeto -- ele será removido da memória (e do `WeakMap`) automaticamente. |
- L93: "apagado do map" → "removido do
WeakMap" - L125: "guardada em um map" → "guardada em um
Map" - L252: "existe no set" → "existe no
WeakSet" - solution.md L30: "as que estão no set" → "as que estão no
WeakSet"
| ## Caso de uso: cache | ||
|
|
||
| Another common example is caching. We can store ("cache") results from a function, so that future calls on the same object can reuse it. | ||
| Outro exemplo comum é o cache. Podemos guardar ("cachear") os resultados de uma função, para que chamadas futuras sobre o mesmo objeto possam reaproveitá-los. |
There was a problem hiding this comment.
"cachear" é um anglicismo. Sugestão:
| Outro exemplo comum é o cache. Podemos guardar ("cachear") os resultados de uma função, para que chamadas futuras sobre o mesmo objeto possam reaproveitá-los. | |
| Outro exemplo comum é o cache. Podemos guardar em cache os resultados de uma função, para que chamadas futuras sobre o mesmo objeto possam reaproveitá-los. |
| - Like `Set`, it supports [`add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/add), [`has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/has) and [`delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/delete), but not `size`, `keys()` and no iterations. | ||
| - É análogo ao `Set`, mas só podemos adicionar objetos ao `WeakSet` (não primitivos). | ||
| - Um objeto existe no set enquanto for alcançável de algum outro lugar. | ||
| - Assim como o `Set`, ele suporta [`add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/add), [`has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/has) e [`delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/delete), mas não `size`, `keys()`, e não há iterações. |
There was a problem hiding this comment.
(Opcional) Detalhe que já vem do original: os links dos métodos do WeakSet usam Weakset (com "s" minúsculo) no caminho. Funciona por causa do redirecionamento do MDN, mas já que a linha foi mexida, dá pra corrigir para Global_Objects/WeakSet/add, /has e /delete. Se quiser, também dá pra apontar para pt-BR em vez de en-US, mas o repositório usa os dois, então fica a seu critério.
| Seu código pode acessá-lo, mas as mensagens são gerenciadas pelo código de outra pessoa. Mensagens novas são adicionadas, as antigas são removidas regularmente por esse código, e você não sabe os momentos exatos em que isso acontece. | ||
|
|
||
| Now, which data structure could you use to store information about whether the message "has been read"? The structure must be well-suited to give the answer "was it read?" for the given message object. | ||
| Agora, qual estrutura de dados você poderia usar para guardar a informação de que a mensagem "já foi lida"? A estrutura precisa ser bem adequada para responder "ela foi lida?" para um determinado objeto de mensagem. |
There was a problem hiding this comment.
"guardar a informação de que a mensagem 'já foi lida'" dá a ideia de registrar um fato já conhecido. O original ("whether the message has been read") fala em guardar se a mensagem foi lida ou não, ou seja, uma resposta sim/não, que é a ideia da solução com WeakSet.
| Agora, qual estrutura de dados você poderia usar para guardar a informação de que a mensagem "já foi lida"? A estrutura precisa ser bem adequada para responder "ela foi lida?" para um determinado objeto de mensagem. | |
| Agora, qual estrutura de dados você poderia usar para guardar a informação sobre se a mensagem "já foi lida"? A estrutura precisa ser bem adequada para responder "ela foi lida?" para um determinado objeto de mensagem. |
|
|
||
| // answer: was the message[0] read? | ||
| // resposta: a message[0] foi lida? | ||
| alert("Read message 0: " + readMessages.has(messages[0])); // true |
There was a problem hiding this comment.
Esta string ficou em inglês, mas outras strings dos exemplos foram traduzidas (como "documentos secretos" no artigo):
| alert("Read message 0: " + readMessages.has(messages[0])); // true | |
| alert("Mensagem 0 lida: " + readMessages.has(messages[0])); // true |
|
Obrigado pela revisão, @gabifs! Apliquei tudo: troquei "garbage collector" por "coletor de lixo"/"coleta de lixo" (variando pra não repetir) em todas as ocorrências do artigo e do segundo exercício, troquei "map"/"set" genéricos por |
Tradução do artigo "WeakMap and WeakSet" para o português, incluindo os dois exercícios.
Conforme comentado na #1.