Faz sentido usar "ys" em vez de "ies" nos identificadores para facilitar a funcionalidade de localizar e substituir? [fechadas]


9

Embora gramaticalmente incorreto, ao escrever identificadores para funções, variáveis ​​etc., faz sentido simplesmente acrescentar um "s" ao plural de palavras que terminam em Y? Minha razão para isso seria que, se você precisar encontrar e substituir, por exemplo, substituir "empresa" por "fornecedor", "empresa" corresponderá às formas singular e plural (" empresa e" empresa s "), enquanto se o plural foi escrito corretamente, você teria que fazer duas pesquisas separadas.


8
E quanto a crianças, ratos, facas, lobos, homens, mulheres, mulheres e dentes? Tudo é válido para evitar as temidas "duas pesquisas separadas" .
Tulains Córdova

3
Eu sou parcial para wolfys mais wolfies mim ...
Jimmy Hoffa

2
Você realmente planeja renomear identificadores com frequência no seu fluxo de trabalho? Parece um pouco exagerado assumir toda a loucura cognitiva de nomes com erros de ortografia no código apenas para suportar uma função que talvez nunca seja usada.
Kent A.

10
Acredite, você não deseja aplicar uma operação de localização e substituição em uma grande base de código para uma palavra como "empresa" sem uma restrição "somente palavras completas". Assim, você terá que usar duas pesquisas separadas, também.
Doc Brown

2
Dois. Separado. Pesquisas.
Tulains Córdova

Respostas:


24

Qualquer pesquisa e substituição deve ser realizada com cuidado e cada alteração é verificada manualmente para, por exemplo, evitar "acompanhar" em um comentário, tornando-se "fornecedor" com a alteração da sua empresa / fornecedor. Como tal, duas pesquisas separadas para "empresa" e "empresas" não devem criar uma sobrecarga significativa em comparação com o tempo gasto na inspeção e aprovação de cada alteração.

Portanto, palavras com erros de ortografia para alcançar apenas uma pesquisa oferecem os negativos de parecer mal e ser mais difícil de ler do que precisa, sem oferecer nenhum benefício óbvio.


11
E, com as ferramentas de refatoração cada vez melhores, a pesquisa e a substituição globais baseadas apenas no texto estão se tornando a maneira menos confiável de renomear um identificador.
Kent A.

Isso não seria um problema usando uma pesquisa "somente palavras inteiras", conforme mencionado pelo Doc Brown.
SHNC

6
@ user3047082, busca da palavra inteira não corresponde "da empresa" qualquer um, fazendo com que toda a pergunta sem sentido ...
David Arno

6

Suponho que você esteja falando sobre renomear em arquivos de código-fonte. Com os IDEs atuais, isso sempre deve ser feito com as ferramentas de refatoração do IDE. Se o seu IDE não tiver isso, considere mudar para outro IDE. A maioria das ferramentas de refatoração IDE também mantém um histórico de refatoração, oferecendo a capacidade de "desfazer" rapidamente se você não gostar dos resultados do refatorador. Usando a pesquisa / substituição, você pode não ter a capacidade de desfazer todo o conjunto de alterações (a menos que você use as ferramentas de controle de revisão e reverta para a versão confirmada anteriormente). Além disso, usando as ferramentas de refatoração, você está mais seguro de alterar inadvertidamente algo que não pretendia alterar.


3
Para quem sinalizou esta resposta como de baixa qualidade: embora não responda estritamente à pergunta, ela aborda a imagem maior de por que alguém iria querer usar esse esquema de nomeação e uma maneira melhor de realizar a mesma tarefa. Votei "parece OK" na revisão da bandeira e adicionei um voto positivo.

Obrigado, @Snowman. É da natureza humana, quando em uma área desconhecida, formular uma pergunta com base em sua própria mentalidade (inexperiente). Sim, embora eu não tenha respondido à pergunta real, minha suposição do que realmente estava sendo perguntado foi baseada em outras pistas da pergunta. Os plurais que encontrei mais são de ferramentas de geração de código, por exemplo, engenharia reversa XSD para POJO, Hibernate / JPA do banco de dados, etc. Essencialmente, se esses plurais estão no código e o autor não gostou da escolha de plurais, provavelmente não foram escritos pelo autor e, provavelmente, gerados automaticamente.
Javabeano

-9

Sim! Sim! Sim! Faz todo o sentido fazer isso. E eu venho fazendo isso há anos.

Divulgação 1: Inglês não é minha língua nativa.

Divulgação 2: Meu conhecimento da gramática inglesa é consideravelmente melhor que o do falante nativo médio.

Divulgação 3: Quando se trata de se comunicar com humanos, sou uma gramática veemente nazista.

E agora que essas divulgações estão fora do caminho, deixe-me afirmar que a gramática inglesa não tem lugar no código. Veja bem, é por isso que se chama código e não prosa . Supõe-se que tenha alguma semelhança com uma linguagem entendida pelos humanos, com o objetivo de facilitar a leitura, mas fora isso, o que mais precisamos do código não são as qualidades da prosa; são outras qualidades mais técnicas, como precisão , inequívoca e concisão . É por isso que a sintaxe C de if( x != y ) y++;é muito preferível à IF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.sintaxe de Cobol. A alegada conveniência de compiladores que entendem a linguagem natural é uma falácia, e não aceite minha palavra, veja o que ol'Edsger tem a dizer sobre isso:Edsger W. Dijkstra, Sobre a tolice da "programação de linguagem natural" .

Outra qualidade que é importante é a computabilidade dos identificadores . O fato de uma propriedade chamada Colorsempre poder ser lida por meio de um método chamado getColor()e gravado por meio de um método chamado setColor()é de suma importância. Esses identificadores são calculáveis ​​a partir do nome da propriedade, portanto você não precisa conhecê-los de cor. Se um programador escolhesse um par de métodos chamados getColor()por um lado, mas colorize()por outro lado, seus colegas considerariam com razão essa sabotagem. É assim que a computabilidade do identificador é importante.

Além disso, as ferramentas de programação podem ser escritas (e muitas delas foram de fato escritas, por exemplo, Hibernate ), que podem computar esses nomes. Sem a computabilidade do nome do identificador, você teria que usar sintaxe adicional (por exemplo, no Hibernate, anotações extras) para especificar para cada ferramenta precisamente como criar cada nome de identificador único ou exatamente qual nome ad hoc você deu a cada entidade.

Portanto, a computabilidade do identificador é importante, ao mesmo tempo em que a gramática inglesa é irrelevante (já que não estamos fazendo programação em linguagem natural), para poder calcular o nome de uma coleção de entidades sempre acrescentando "s" ao nome de uma única instância faz todo sentido, não importa o fato de que ela viola as sensibilidades do idioma inglês da maioria das pessoas (incluindo a minha).

E gostemos ou não, esta é a tendência do futuro. O idioma nativo da maioria dos programadores do planeta não é mais o inglês, e a tendência é continuar muito forte nessa direção. (Além disso, eu nem estaria disposto a apostar dinheiro com a sugestão de que o inglês seja o idioma nativo da maioria dos programadores que trabalham nos EUA no momento.) Essas são pessoas que, em grande parte, ao tentar calcular o nome de uma coleção a partir do nome de uma única instância de "empresa", simplesmente acrescentará um "s", e o formato "empresas" nem passará pela sua cabeça. Para uma grande e crescente porcentagem de programadores no mundo, o conhecimento das peculiaridades do idioma inglês não agrega nenhum valor ao seu trabalho, apenas o torna um pouco mais difícil.


7
1. Índices e índices são plurais válidos de índice. Você está enganado em acreditar que apenas um está correto, por exemplo, consulte oxforddictionaries.com/definition/english/index . 2. Um X privado, que pode ser lido via getX e gravado via setX não é privado; é um valor público. 3. Código é um documento de design. Ele informa um compilador sobre como gerar "código de máquina", mas, mais importante ainda, descreve esse design de uma maneira que outras pessoas possam ler facilmente. A legibilidade é um dos dois aspectos mais importantes do código (a testabilidade é o outro).
David Arno

3
O código é escrito por dois motivos: para humanos lerem e para computadores executarem. Alguns diriam que o código fonte é escrito principalmente para os humanos lerem, já que a maioria é imediatamente compilada no código de bytes antes que o computador o execute. Portanto, embora os computadores possam não se importar com a gramática adequada, os humanos certamente se importam .
Eric King

3
Embora o inglês não seja seu idioma nativo, pode ser a próxima pessoa que lê seu código. Provavelmente também irá confundir outras pessoas da sua língua nativa que aprenderam inglês.
217 Andy

2
ou você só vai machucar aqueles que pensam duas vezes Companysquando deveria ser Companies. Afinal, todo o ponto do código que costumamos escrever é para torná-lo mais próximo da linguagem natural.
217 Andy

2
Seja como for, acho esse papel cheio de merda. O código está entre a linguagem natural e o bytecode. Se não fosse para facilitar a compreensão humana do código, não haveria motivo para não entrar diretamente com o bytecode.
289 Andy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.