Nomes de métodos?

[quote=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()
[/quote]

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).

[quote=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()

[quote=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ê”)[/quote]
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![/quote]

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

[quote=nel][quote=Hebert Coelho][quote=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…[/quote]frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.[/quote]

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?[/quote]
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.

[quote=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. [/quote]

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.

[quote=sergiotaborda][quote=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()
[/quote]

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)[/quote]

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

[quote=sergiotaborda][quote=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. [/quote]

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. [/quote]

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.

[quote=nel][quote=Hebert Coelho][quote=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…[/quote]frameworks necessitam que métodos comecem com get/set.

Tirando isso, ñ tem vantagem alguma.[/quote]

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?[/quote]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…

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