Nomes de métodos?

27 respostas
EngJorgeAugusto

Ola amigos, eu uso as convenções de java para nomes de identificadores, quando programava em C com Win32 usava a notação húngara, pois bem.
Ciente de que uso as convenções de java, tenho uma pergunta sobre nomes de métodos (ações), vocês usam os verbos no presente como:

salvaArquivo(); 
carregaArquivo();

Ou no futuro:

salvarArquivo();
carregarArquivo();

Eu entendo que o mais adequado semanticamente seria usar no presente, mas gostaria de suas opiniões.

Também entendo que se deve programar em inglês mas os projetos que necessariamente devam ser em português
qual seria a forma mais adequada/comum.

Desde já agradeço.

27 Respostas

B

Eu opto pela primeira opção. Mas só um comentário: a primeira forma não é “presente”, é “imperativo afirmativo” (tempo verbal utilizado para dar ordens); a segunda não é “futuro”, é infinitivo’

EngJorgeAugusto

Eu agradeço a resposta.

Por gentileza leia.

http://www.conjuga-me.net/verbo-salvar

Quando eu disse presente estava me referindo: Presente do Indicativo

Quando me referi ao futuro: Futuro do Conjuntivo.

Mesmo por que esses tempos podem variar dependo do “contexto”.

pmlm

EngJorgeAugusto:

Por gentileza leia.

http://www.conjuga-me.net/verbo-salvar

Quando eu disse presente estava me referindo: Presente do Indicativo

Quando me referi ao futuro: Futuro do Conjuntivo.

Mesmo por que esses tempos podem variar dependo do “contexto”.

Não querendo entrar em discussões de Língua Portuguesa, e como tu mesmo referiste no primeiro post, estamos a falar de ações.
Assim, mesmo que a forma seja igual à do presente do indicativo, o “salva” é o imperativo, ordenando a ação.
O mesmo para o “salvar” que se refere ao infinitivo do verbo (ação) e não ao futuro do conjuntivo.

Hebert_Coelho

salvar

CristianPalmaSola10

Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…

Hebert_Coelho

CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

nel

Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?

Hebert_Coelho

nel:
Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?

Eu já trabalhei em aplicação só pt_BR e em aplicação apenas en_US e para mim foi tranquilo.

Tem gente que não saca muito inglês, e isso pode ser problema caso ela também não saiba muito bem Java. Ela pode ser perder as palavras. Já vi isso acontecer. =/

Isso vai de quem cria e mantem o programa. [=

Rodrigo_Sasaki

nel:
Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?


Não, eu concordo.

Deixando tudo em inglês você deixa tudo padronizado, eu diria. Evita coisas como findPessoaWithEnderecos, e além disso, não tem a dúvida do Declarativo vs Infinitivo, pois fica tudo igual

mi.rodrigues

Acredito que salvar seria melhor.

A

Rodrigo Sasaki:
nel:
Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?


Não, eu concordo.

Deixando tudo em inglês você deixa tudo padronizado, eu diria. Evita coisas como findPessoaWithEnderecos, e além disso, não tem a dúvida do Declarativo vs Infinitivo, pois fica tudo igual

1+

A

EngJorgeAugusto:
Ola amigos, eu uso as convenções de java para nomes de identificadores, quando programava em C com Win32 usava a notação húngara, pois bem.
Ciente de que uso as convenções de java, tenho uma pergunta sobre nomes de métodos (ações), vocês usam os verbos no presente como:

salvaArquivo(); 
carregaArquivo();

Ou no futuro:

salvarArquivo();
carregarArquivo();

Eu entendo que o mais adequado semanticamente seria usar no presente, mas gostaria de suas opiniões.

Também entendo que se deve programar em inglês mas os projetos que necessariamente devam ser em português
qual seria a forma mais adequada/comum.

Desde já agradeço.

Percebi q o pessoal tem utilizado mais com verbo no “Infinitivo”, utilizo desta forma tb.

sergiotaborda

EngJorgeAugusto:
Ola amigos, eu uso as convenções de java para nomes de identificadores, quando programava em C com Win32 usava a notação húngara, pois bem.
Ciente de que uso as convenções de java, tenho uma pergunta sobre nomes de métodos (ações), vocês usam os verbos no presente como:

salvaArquivo(); 
carregaArquivo();

Ou no futuro:

salvarArquivo();
carregarArquivo();

Eu entendo que o mais adequado semanticamente seria usar no presente, mas gostaria de suas opiniões.

A forma correta é usar o imperativo mesmo. Você está dando uma ordem ao objeto : “Objeto, salva o arquivo”. E por isso que o java é uma linguagem imperativa. Você dá ordens explicitamente.

Porque vc acha que existem dois tempos verbais (presente e futuro) ai está a sua duvida. Mas se vc pensar que apenas uma modo verbal ( e não tempo) interessa, vc verá que é simples decidir. Já agora “SaveFile” também está no imperativo.

Eu sei que no Brasil não é comum conhecer - e muito menos usar - estes modos verbais exotericos, mas eles existem na língua portuguesa, assim como nas outras e eles têm o seu propósito. Então vamos usar e conversar sobre , usando os conceitos corretos.

nomes de métodos são verbos no imperativo.

sergiotaborda

Rodrigo Sasaki:
nel:
Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?


Não, eu concordo.

Deixando tudo em inglês você deixa tudo padronizado, eu diria. Evita coisas como findPessoaWithEnderecos, e além disso, não tem a dúvida do Declarativo vs Infinitivo, pois fica tudo igual

Hum… O "declarativo’ não existe. Existe o Indicativo. O Infinitivo (sem tempo) é o proprio “nome do verbo”. Em português, “ir” é o infinitivo do verbo “ir”. Em inglês “go” é a terceira pessoa do singular do presente do indicativo do verbo “to go”. Ou seja, em inglês o infinitivo sempre tem um “to” antes, porque sem ele, estamos usa uma conjugação do verbo. Portanto em inglês não da na mesma usar o presente do indicativo ou o infinitivo.

Pro outro lado. GoTo é uma ordem. “Vai para”. “Vai” e “Go” são conjugações do presente to imperativo. Por isso que “Go Horse” é “Vai Cavalo” e não “Ir Cavalo” :slight_smile:

Moral da historia, em ambas as línguas é sempre no imperativo. E isso é devido a que a linguagem java é imperativa (O sql , por exemplo, também é).

Linguagens declarativas não usam verbos. Por exemplo o html.

pmlm

goes

A

Se é o modo imperativo não deveria ser salve?

Esta é a forma para terceira pessoa (e pronomes de tratamento na terceira pessoa, como “você”)

gomesrod

Para mim é no infinitivo. O nome do método descreve a ação (salvar Arquivo), não é uma “ordem verbal” dada ao objeto (salve o Arquivo) - detalhe adicional, repararam que ao usar imperativo a ação acaba pedindo o artigo definido “o” ?

Em inglês é a mesma coisa. Entendo saveFile(f) como salvarArquivo(f), e não como salvaArquivo(f) nem salveArquivo(f) . É infinitivo, só que sem “to” na frente senão todos os métodos do mundo começariam com “to” - toSaveFile(), toGetName() , toSetName()

AbelBueno:
Se é o modo imperativo não deveria ser salve?
Esta é a forma para terceira pessoa (e pronomes de tratamento na terceira pessoa, como “você”)

Depende da região :slight_smile:
Se tu estiveres no Rio Grande do Sul, tratarás o objeto na segunda pessoa e dirás “salva”
Se você estiver em São Paulo vai tratar o objeto como você e vai dizer “salve”

E se o arquivo for da periferia, você ainda tem a opção de MANDAR UM SALVE pros mano!

Rodrigo_Sasaki

Hehehe, na verdade em São Paulo se usa você, mas ainda no tempo da segunda pessoa.

Dificilmente você ouve alguém dizer “Pegue aquilo pra mim” em São Paulo, quase sempre é “Pega”

sergiotaborda

goes

Certo certo. Eu estava pensando em “you” e escrevi a terceira pessoa. é a segunda pessoa.

sergiotaborda

gomesrod:
Para mim é no infinitivo. O nome do método descreve a ação (salvar Arquivo), não é uma “ordem verbal” dada ao objeto (salve o Arquivo) - detalhe adicional, repararam que ao usar imperativo a ação acaba pedindo o artigo definido “o” ?

Em inglês é a mesma coisa. Entendo saveFile(f) como salvarArquivo(f), e não como salvaArquivo(f) nem salveArquivo(f) . É infinitivo, só que sem “to” na frente senão todos os métodos do mundo começariam com “to” - toSaveFile(), toGetName() , toSetName()

Em inglês o imperativo é construído simplesmente removendo o to. Logo, parece que está sendo usado o infinitivo, mas não está, exatamente porque não tem o to.
Ao invocar um método estamos sim dando uma ordem. O “saveFile” é claramente uma ordem.

É claro que se ha uma interpretação de que em inglês está sendo usado o infinitivo, então entendo porque acham que deve ser usado infinitivo em português. Mas sendo que essa interpretação está errada, é de considerar que o uso do infinitivo em código em português não faz sentido. E nesse caso “salveArquivo” é o que faz mais sentido de todos (Supondo que a palava “salve” existe nesse contexto)

É claro que ao mudar de lingua poderiamos escolher um novo padrão para dar nomes aos métodos. E até poderíamos escolher o infinitivo em português, mas estaríamos indo contra a convenção das linguagens de programação imperativa. E a convenção de usar o imperativo não depende da língua que é usada para escrever os nomes.

A pergunta original foi qual seria a convenção. A convenção é usar o imperativo. Podem não gostar e podem não usar a convenção, mas a convenção não é uma questão de gosto (é uma derivação lógica da imperatividade da linguagem).

A

gomesrod:
Para mim é no infinitivo. O nome do método descreve a ação (salvar Arquivo), não é uma “ordem verbal” dada ao objeto (salve o Arquivo) - detalhe adicional, repararam que ao usar imperativo a ação acaba pedindo o artigo definido “o” ?

Em inglês é a mesma coisa. Entendo saveFile(f) como salvarArquivo(f), e não como salvaArquivo(f) nem salveArquivo(f) . É infinitivo, só que sem “to” na frente senão todos os métodos do mundo começariam com “to” - toSaveFile(), toGetName() , toSetName()

AbelBueno:
Se é o modo imperativo não deveria ser salve?
Esta é a forma para terceira pessoa (e pronomes de tratamento na terceira pessoa, como “você”)

Depende da região :slight_smile:
Se tu estiveres no Rio Grande do Sul, tratarás o objeto na segunda pessoa e dirás “salva”
Se você estiver em São Paulo vai tratar o objeto como você e vai dizer “salve”

E se o arquivo for da periferia, você ainda tem a opção de MANDAR UM SALVE pros mano!

Andas escutando muito Fábio Rogério ehm! Rs… :smiley:

x111

nel:
Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?


Não acredito que só você enxergue, mas é um pseudo padrão. É aquela coisa do tipo vou com a multidão muito parecido com o que ocorre com quem usa notação húngara. O nome de uma classe e seus métodos devem corresponder a linguagem adotada pelo negócio. Se seu cliente diz que emite uma nota fiscal você cria uma classe nota “NotaFiscal” e um método “emitir” e não uma classe “Invoice” e um método “issue”. Deve imperar no desenvolvimento a linguagem utilizada no negócio pois isso facilita a comunicação e produz um modelo mais rico. Em DDD isso se chama Linguagem Onipresente ou Ubíqua. Assim ninguém ficará “perdido na tradução” pois muitas vezes os verbos traduzidos nos métodos em inglês não representam realmente a operação naquela negócio, por exemplo no caso da invoice eu já vi utilizarem bill em vez de issue.

sergiotaborda

x@ndy:

Se seu cliente diz que emite uma nota fiscal você cria uma classe nota “NotaFiscal” e um método “emitir” e não uma classe “Invoice” e um método “issue”. Deve imperar no desenvolvimento a linguagem utilizada no negócio pois isso facilita a comunicação e produz um modelo mais rico. Em DDD isso se chama Linguagem Onipresente ou Ubíqua. Assim ninguém ficará “perdido na tradução” pois muitas vezes os verbos traduzidos nos métodos em inglês não representam realmente a operação naquela negócio, por exemplo no caso da invoice eu já vi utilizarem bill em vez de issue.

Isso é porque a NotaFiscal no brasil é simultaneamente um titulo de propriedade, cobrança e transporte. Como titulo de propriedade vc faria issue(), como titulo de cobrança vc faria bill()
A ique entra o problema de traduzir somente as palavras sem olhas aos conceitos.

gomesrod

sergiotaborda:
gomesrod:
Para mim é no infinitivo. O nome do método descreve a ação (salvar Arquivo), não é uma “ordem verbal” dada ao objeto (salve o Arquivo) - detalhe adicional, repararam que ao usar imperativo a ação acaba pedindo o artigo definido “o” ?

Em inglês é a mesma coisa. Entendo saveFile(f) como salvarArquivo(f), e não como salvaArquivo(f) nem salveArquivo(f) . É infinitivo, só que sem “to” na frente senão todos os métodos do mundo começariam com “to” - toSaveFile(), toGetName() , toSetName()

Em inglês o imperativo é construído simplesmente removendo o to. Logo, parece que está sendo usado o infinitivo, mas não está, exatamente porque não tem o to.
Ao invocar um método estamos sim dando uma ordem. O “saveFile” é claramente uma ordem.

É claro que se ha uma interpretação de que em inglês está sendo usado o infinitivo, então entendo porque acham que deve ser usado infinitivo em português. Mas sendo que essa interpretação está errada, é de considerar que o uso do infinitivo em código em português não faz sentido. E nesse caso “salveArquivo” é o que faz mais sentido de todos (Supondo que a palava “salve” existe nesse contexto)

Ok, segundo a referência passada (url=http://c2.com/cgi/wiki?NamingNotifications) realmente meu entendimento estava incorreto, saveFile deveria ser visto como “salve o arquivo”.
Mas em português fica estranho, e sabe por que? Porque não é assim que vemos ser usado!
Pode tomar qualquer aplicação escrita em português, os métodos estarão nomeados como verbos no infinitivo. Já trabalhei para empresas que têm padrões de arquitetura e codificação documentados, e todas adotam o infinitivo.

Para nós esse é o jeito natural de pensar … por exemplo, foi citado aqui no tópico um exemplo da classe NotaFiscal, com o método emitir(). Será que alguém questionou a forma do verbo achando que seria melhor usar emita() ?

Esse “novo padrão” está aí, independente das convenções originais. Não é um pequeno grupo que prefere verbos no infinitivo, é o mercado (pt_BR) como um todo. Só o que falta mesmo é oficializar de alguma maneira…

Então não sei de mais nada! rs

x111

sergiotaborda:
x@ndy:

Se seu cliente diz que emite uma nota fiscal você cria uma classe nota “NotaFiscal” e um método “emitir” e não uma classe “Invoice” e um método “issue”. Deve imperar no desenvolvimento a linguagem utilizada no negócio pois isso facilita a comunicação e produz um modelo mais rico. Em DDD isso se chama Linguagem Onipresente ou Ubíqua. Assim ninguém ficará “perdido na tradução” pois muitas vezes os verbos traduzidos nos métodos em inglês não representam realmente a operação naquela negócio, por exemplo no caso da invoice eu já vi utilizarem bill em vez de issue.

Isso é porque a NotaFiscal no brasil é simultaneamente um titulo de propriedade, cobrança e transporte. Como titulo de propriedade vc faria issue(), como titulo de cobrança vc faria bill()
A ique entra o problema de traduzir somente as palavras sem olhas aos conceitos.

Sim. O problema é que uma nota fiscal não tem um correspondente direto para tradução! Depende do contexto que está sendo usado e isso gera confusão. Para a tradução funcionar corretamente o desenvolvedor teria que ser um expert no negócio. Esse caso da Invoice é bem simples, mas existem termos em determinados negócios que não tem tradução alguma, que seriam necessários um conjunto de palavras para explicar o que significa. Por isso que eu acredito que a linguagem dominante para modelar um domínio seja a do negócio. Isso evita confusão e um trabalho desnecessário de tradução.

Acredito que o inglês deva ser adotado nas seguintes condições:

  1. Se for a língua utilizada pelo “Product Owner”. Se você se comunica com ele em inglês deve usar inglês para codificar;
  2. Para projetos internacionais com várias equipes de desenvolvimento no qual não se tem como escapar do inglês.
  3. Para frameworks e apis genéricas que vão ser utilizada globalmente.

No resto, codifique utilizando a mesma linguagem que seu cliente utiliza nos negócios.

WellingtonRamos

nel:
Hebert Coelho:
CristianPalmaSola10:
Sempre uso salvar, carregar, e quanto ao nomes de metodos em ingles, no meu ver a unica vantagem e nomes de metodos menores em algumas situacoes fora isso naum vejo vantagem…
frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.

Até hoje, em nenhum projeto que participei (exceto os dentro da universidade, quando aprendi o que era Java), eu desenvolvi usando nomenclaturas em português, sempre foi em inglês. Acredito ser o padrão adotado internacionalmente.

Também acredito ser muito mais fácil alguém entender algo escrito em inglês do que em português (que não fale português, obviamente). Digamos que o inglês é “universal” e é um padrão, por isso procuro desenvolver ele com esta língua. É claro que os projetos também já tiveram participações de estrangeiros e/ou poderia haver essa possibilidade, outro bom motivo para tal.

Só eu enxergo dessa forma?

Eu prefiro usar tudo em inglês, porém há clientes que obrigam que o código seja em português (e pior, permite algumas misturas como getQualquerCoisa). Daí, quando você precisa implementar uma interface da API (ex.: Runnable), poderá ter uma classe com um monte de métodos em português e um em inglês (além dos já herdados do Object)…
Acho até menos legível…

WellingtonRamos

Eu costumo usar o verbo no infinitivo. Mas observando que o @sergiotaborda escreveu, realmente, a forma verbal correta deveria ser o imperativo.

Criado 18 de março de 2013
Ultima resposta 19 de mar. de 2013
Respostas 27
Participantes 14