Swift-style-guide: Usando a si mesmo

Criado em 10 jun. 2014  ·  28Comentários  ·  Fonte: raywenderlich/swift-style-guide

Enquanto escrevo código Swift, me pego digitando muito self.propertyName e self.method() . Mas em Swift (como em C++, C# e Java) usar self não é necessário a menos que você esteja tentando resolver uma situação ambígua.

Sugiro que não usemos self exceto para esse fim.

Comentários muito úteis

Eu não confiaria muito nos modelos da Apple ou no código de amostra. Geralmente não é o melhor exemplo de como fazer as coisas... Esse mesmo modelo também termina as linhas com um ponto e vírgula, por exemplo. :-)

Todos 28 comentários

Concordo, e também concordo que será um pouco difícil no começo :)

Concordo com ambos os acordos.

Então, para baixo com self, a menos que o compilador reclame sobre isso!

Enviado do meu iPhone

Em 10 de junho de 2014, às 5h48, Cesare [email protected] escreveu:

Concordo, e também concordo que será um pouco difícil no começo :)


Responda a este e-mail diretamente ou visualize-o no GitHub.

O que me incomoda em abandonar o eu é que não há uma maneira fácil de
saber imediatamente se uma var é uma instância var ou local.

Vcs não concordam?

Na terça-feira, 10 de junho de 2014, elephantronic [email protected] escreveu:

Concordo com ambos os acordos.

Então, para baixo com self, a menos que o compilador reclame sobre isso!

Enviado do meu iPhone

Em 10 de junho de 2014, às 5h48, Cesare < [email protected]
<_ei="16">

Concordo, e também concordo que será um pouco difícil no começo :)


Responda a este e-mail diretamente ou visualize-o no GitHub.


Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45607945
.

O que me incomoda em abandonar o eu é que não há uma maneira fácil de
saber imediatamente se uma var é uma instância var ou local.

Muitos editores que usei destacam os dois de forma diferente. Espero que o Xcode siga com esse recurso.

Eu só usaria self para desambiguar.

O guia não é direcionado aos nossos livros e tutoriais? Eu ainda acho que usar self
é mais legível (mas eu sei que a apple não está usando, então vamos no final
também não use)...

Na terça-feira, 10 de junho de 2014, ColinEberhardt [email protected] escreveu:

O que me incomoda em abandonar o eu é que não há uma maneira fácil de
saber imediatamente se uma var é uma instância var ou local.

Muitos editores que usei destacam os dois de forma diferente. Esperançosamente
O Xcode seguirá com esse recurso.

Eu só usaria self para desambiguar.


Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45625271
.

Concordou que devemos abandonar self

A Apple não o usa, então acho que também não deveríamos. Não estou muito feliz com essa decisão do lado da Apple, mas acho que devemos seguir suas convenções.

Eu sei que disse para baixo comigo mesmo, e acho que ainda acho isso, mas acabei de olhar para o código no modelo de jogo Swift Sprite Kit. É GameViewController usa self.view e self.classForKeyedUnarchiver. Então esse é um exemplo de uma propriedade e um método padrão, ambos usando self.

Na mesma classe, também encontrei duas instâncias de var que compilaram bem como let. Espero que seus modelos não estejam prontos para o horário nobre, mas isso me dá uma pausa. Eu gostaria de ver como algumas dessas coisas progridem nos betas.

Eu não confiaria muito nos modelos da Apple ou no código de amostra. Geralmente não é o melhor exemplo de como fazer as coisas... Esse mesmo modelo também termina as linhas com um ponto e vírgula, por exemplo. :-)

Bom ponto. Provavelmente deveríamos adicionar ponto e vírgula em todos os lugares também. ;)

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide] Usando self (#7)
De: "Matthijs Hollemans" [email protected]
Data: 11/06/14 03:19
Para: "raywenderlich/swift-style-guide" [email protected]
Cc: "elephantronic" [email protected]

Eu não confiaria muito nos modelos da Apple ou no código de amostra. Geralmente não é o melhor exemplo de como fazer as coisas... Esse mesmo modelo também termina as linhas com um ponto e vírgula, por exemplo. :-)
-
Responda a este e-mail diretamente ou visualize-o no GitHub.

Acredito que o self torna o código muito mais claro. Isso torna muito fácil saber se é uma propriedade ou variável de instância. Mesmo motivo pelo qual eu voto para sempre usar self em objc para propriedades em vez de usar sua variável de instância _propertyName.

self definitivamente torna mais claro ao ler um trecho de código. A verdadeira questão é se essa clareza extra vale ou não a pena.

Se você digitar o código que compila, ele compila. O Swift não permite que você compile código que oculta implicitamente outra variável/função de um escopo diferente, então não precisamos dizer self porque se o método for o único no escopo, ele será compilado. Se estiver em outro objeto _e_ neste objeto, ele falhará ao compilar até que você especifique qual deseja (usando self, se necessário)

Obj-C é a única linguagem que eu já vi que pede às pessoas que especifiquem que possuem o que claramente possuem, então é bom que Swift tenha acabado com isso.

Se você estiver escrevendo um método, não deve ser difícil ver quais variáveis ​​são locais para esse método. Fora desse método, o escopo só importa para o compilador.

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide] Usando self (#7)
De: "ecerney" [email protected]
Data: 12/06/14 13:17
Para: "raywenderlich/swift-style-guide" [email protected]
Cc: "elephantronic" [email protected]

Eu acredito que o self torna o código muito mais claro. Isso torna muito fácil saber se é uma propriedade ou variável de instância. Mesmo motivo pelo qual eu voto para sempre usar self em objc para propriedades em vez de usar sua variável de instância _propertyName.
-
Responda a este e-mail diretamente ou visualize-o no GitHub.

Continuo não concordando com este tópico.

Este estilo é suposto ser para o tutorial e autores de livros não um
guia geral de estilo sobre Swift.

No contexto de livros e tutoriais onde você pode adicionar algumas linhas de código
de um método de cada vez, acho que é crucial usar self para ter certeza
o leitor conhece o contexto da variável.

Na quinta-feira, 12 de junho de 2014, elephantronic [email protected] escreveu:

self definitivamente torna mais claro ao ler um trecho de código. O Real
questão é se essa clareza extra vale a pena ou não.

Se você digitar o código que compila, ele compila. Swift não deixa você compilar
código que oculta implicitamente outra variável/função de um escopo diferente, então
não precisamos dizer self porque se o método for o único no escopo,
ele irá compilar. Se estiver em outro objeto _e_ neste objeto, ele falhará
para compilar até que você especifique qual deseja (usando self, se
necessário)

Obj-C é a única linguagem que eu já vi que pede às pessoas que especifiquem isso
eles possuem o que claramente possuem, então é bom que Swift tenha acabado com
isto.

Se você estiver escrevendo um método, não deve ser difícil ver quais variáveis
são locais para esse método. Fora desse método, o escopo só importa para o
compilador.

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide]
Usando a si mesmo (#7)
De: "ecerney" < [email protected]
<_e i="31"/> Data: 12/06/14 13:17
Para: "raywenderlich/swift-style-guide" <
[email protected]
<_e i="36"/> Cc: "elephantronic" < [email protected]
<_ei="39">

Eu acredito que o self torna o código muito mais claro. Fica muito fácil saber
seja uma propriedade ou variável de instância. Mesma razão que eu voto para sempre
use self em objc para propriedades em vez de usar sua variável de instância

_nome da propriedade.

Responda a este e-mail diretamente ou visualize-o no GitHub.


Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45927747
.

Eu escrevi um tutorial Unity bastante popular. Ele usa C# e sem selfs. Não ouvi reclamações de que as pessoas não entendiam de onde vinham as variáveis.

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide] Usando self (#7)
De: "Marin Todorov" [email protected]
Data: 12/06/14 14:16
Para: "raywenderlich/swift-style-guide" [email protected]
Cc: "elephantronic" [email protected]

Continuo não concordando com este tópico.

Este estilo é suposto ser para o tutorial e autores de livros não um
guia geral de estilo sobre Swift.

No contexto de livros e tutoriais onde você pode adicionar algumas linhas de código
de um método de cada vez, acho que é crucial usar self para ter certeza
o leitor conhece o contexto da variável.

Na quinta-feira, 12 de junho de 2014, elephantronic [email protected] escreveu:

self definitivamente torna mais claro ao ler um trecho de código. O Real
questão é se essa clareza extra vale a pena ou não.

Se você digitar o código que compila, ele compila. Swift não deixa você compilar
código que oculta implicitamente outra variável/função de um escopo diferente, então
não precisamos dizer self porque se o método for o único no escopo,
ele irá compilar. Se estiver em outro objeto _e_ neste objeto, ele falhará
para compilar até que você especifique qual deseja (usando self, se
necessário)

Obj-C é a única linguagem que eu já vi que pede às pessoas que especifiquem isso
eles possuem o que claramente possuem, então é bom que Swift tenha acabado com
isto.

Se você estiver escrevendo um método, não deve ser difícil ver quais variáveis
são locais para esse método. Fora desse método, o escopo só importa para o
compilador.

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide]
Usando a si mesmo (#7)
De: "ecerney" < [email protected]
<_e i="40"/> Data: 12/06/14 13:17
Para: "raywenderlich/swift-style-guide" <
[email protected]
<_e i="45"/> Cc: "elephantronic" < [email protected]
<_ei="48">

Acredito que o self torna o código muito mais claro. Fica muito fácil saber
seja uma propriedade ou variável de instância. Mesma razão que eu voto para sempre
use self em objc para propriedades em vez de usar sua variável de instância

_nome da propriedade.

Responda a este e-mail diretamente ou visualize-o no GitHub.

O argumento "compila então está ok" é fraco. Acho que devemos encontrar nosso estilo e segui-lo. Não é segredo que eu sou a favor da legibilidade em vez de mais algumas teclas para digitar quando se trata de tutoriais. Eu voto para usar self.

Sim !!! Cesare está do lado da legibilidade! Nós podemos fazer isso!

mais 4 anos! mais 4 anos!

Quero dizer - usando self para variáveis ​​de classe!

Na quinta-feira, 12 de junho de 2014, Cesare [email protected] escreveu:

O argumento "compila então está ok" é fraco. Acho que devemos encontrar
nosso estilo e cumpri-lo. Não é segredo que sou a favor da legibilidade sobre
mais algumas teclas para digitar quando se trata de tutoriais. Eu voto para usar self.


Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/raywenderlich/swift-style-guide/issues/7#issuecomment -45931720
.

Ok, e quanto a esse argumento?

O uso forçado de self é uma das coisas que a Apple removeu ao criar o Swift porque eles viram o quão estúpido é e perceberam que todas as outras línguas do mundo não precisam disso e todo mundo parece estar bem com isso, certo? Se a Apple quisesse, eles poderiam facilmente incluir o self como parte obrigatória do idioma. Eles escolheram não pela razão muito boa de que é completamente desnecessário, e escrever extras desnecessários no código geralmente torna as coisas menos legíveis a longo prazo.

Obj-C era uma linguagem construída em cima de outra linguagem. Coisas como self foram usadas para ajudar a sintaxe de colchetes para indicar uma função Obj-C versus uma função C. O compilador não entendia as classes verdadeiras e tal, então eles tiveram que construir uma sintaxe especial para enganá-lo.

Não é mais necessário, e mantê-lo não vai ajudar você ou nossos leitores. Na verdade, isso tornará as coisas mais difíceis quando você tentar ler o código de outras pessoas, porque você estará tão condicionado a ver a si mesmo que não interpretará as coisas corretamente quando não as vir.

Deixe de lado os grilhões do passado e abrace o futuro. Você se sentirá melhor.

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide] Usando self (#7)
De: "Cesare" [email protected]
Data: 12/06/14 14:44
Para: "raywenderlich/swift-style-guide" [email protected]
Cc: "elephantronic" [email protected]

O argumento "compila então está ok" é fraco. Acho que devemos encontrar nosso estilo e segui-lo. Não é segredo que eu prefiro a legibilidade em vez de mais algumas teclas para digitar quando se trata de tutoriais. Eu voto para usar self.
-
Responda a este e-mail diretamente ou visualize-o no GitHub.

Eu vejo seu ponto @elephantronic e posso concordar com você, mas em 1-2 anos. A única razão pela qual proponho usar self é que é difícil para mim (e suspeito para muitas outras pessoas) esquecer completamente o passado. Se você é um desenvolvedor Objc, você está acostumado a si mesmo, se não for, PRECISARÁ ser capaz de ler (se não escrever) código Objc. De qualquer forma, o self aparece. Então eu voto para usar self "no momento" e proponho revisar esta questão em um ano ou mais, quando todos estiverem mais familiarizados com a linguagem.

Eu voto para não usar self . Eu concordo com @funkyboy que é difícil no começo. Mas também estou pensando por que usaria o mesmo nome para var de instância e var local e tentaria resolver a ambiguidade? Meu entendimento do que @hollance mencionou ( self.propertyName ) não é sobre resolver a ambiguidade ou legibilidade; trata-se do hábito que temos do ObjC e aparentemente não é mais necessário no Swift. Eu vejo self no Swift como o último recurso: ou seja, o compilador reclama.

Faz sentido colocar isso em votação? Acho que houve alguns argumentos bem pensados ​​de cada lado.

Eu sou um +1 por não usar self onde não é necessário.

Também sou +1 por não usar self quando não for necessário. Embora eu compreenda as preocupações de Martin, também faço um pouco de desenvolvimento para Android e _muito_ raramente vejo um this no código, embora ocasionalmente seja quebrado para tornar algo mais claro ou resolver um conflito, é um muito mais óbvio do que você pensa quando está usando uma "propriedade" versus uma variável local.

Eu vi Go quando olhei pela primeira vez para o Swift, mas quanto mais e mais observo, mais Java vejo.

+1 altruísta

É justo que eu aceite o veredicto democrático :)
Deixe-me apontar uma incoerência. Ao não usar self, posso deduzir que um dos princípios em que se baseia a diretriz é "não escreva se não for necessário". Eu posso não gostar, mas desde que seja consistente em toda a diretriz, eu aceito. Eu ainda acho que isso impacta negativamente na legibilidade.
O mesmo princípio acompanha nossa decisão sobre a inferência de tipos, não escreva o tipo "porque não é necessário".
Se aplicarmos o mesmo princípio aos inicializadores, devemos suprimir nomes externos para inicializadores. Adivinha por quê? Porque "eles não são necessários". Se formos “minimizarmos”, vamos fazê-lo, mas totalmente.

Concordamos em não escrever o tipo porque não é necessário.

Concordamos em usar os padrões do Swift em nomes de parâmetros, porque é o padrão e não faz sentido sair do caminho para fazer algo diferente do que o Swift quer que você faça nesses casos. Para eliminar os nomes dos parâmetros, você deve escrever o código _extra_ e depois explicá-lo.

--------- Mensagem Original --------- Assunto: Re: [swift-style-guide] Usando self (#7)
De: "Cesare" [email protected]
Data: 12/06/14 18:30
Para: "raywenderlich/swift-style-guide" [email protected]
Cc: "elephantronic" [email protected]

É justo que eu aceite o veredicto democrático :)
Deixe-me apontar uma incoerência. Ao não usar self, posso deduzir que um dos princípios em que se baseia a diretriz é "não escreva se não for necessário". Eu posso não gostar, mas desde que seja consistente em toda a diretriz, eu aceito. Eu ainda acho que isso impacta negativamente na legibilidade.
O mesmo princípio acompanha nossa decisão sobre a inferência de tipos, não escreva o tipo "porque não é necessário".
Se aplicarmos o mesmo princípio aos inicializadores, devemos suprimir nomes externos para inicializadores. Adivinha por quê? Porque "eles não são necessários". Se formos “minimizarmos”, vamos fazê-lo, mas totalmente.
-
Responda a este e-mail diretamente ou visualize-o no GitHub.

self é apenas barulho no Swift, mate-o. Nós vamos nos adaptar.

Olá, desculpe reanimar o tópico morto.

Eu gostaria de saber como vocês estão se sentindo agora depois de abandonar self ? Você está bem agora? Houve algum problema particular de legibilidade?

Eu abandonei e nunca olhei para trás. :)

Os livros e tutoriais do raywenderlich.com são altruístas há 4 anos e ninguém teve nenhuma reclamação específica.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jrturton picture jrturton  ·  3Comentários

Lweek picture Lweek  ·  5Comentários

sima-11 picture sima-11  ·  5Comentários

luki picture luki  ·  3Comentários

samkim102 picture samkim102  ·  6Comentários