Como devo marcar tipos em programas C e C ++?


12

Em esta resposta da mina , eu usei _tno final de tipos, que terminou na melhor das hipóteses, controversa. Essa é a prática que uso nos meus projetos atuais.

typedef struct {
    int x;
    int y;
} point_t;

O objetivo era ser consistente com os tipos C de stddef.hlike size_tou ptrdiff_t. No entanto, de acordo com certos comentários nas minhas perguntas, o _tpostfix parece estar reservado para o POSIX. O que devo usar em vez de _t? Ou devo continuar usando _tassim mesmo?

Esta pergunta é para C e C ++. Se esses idiomas tiverem convenções diferentes, fique à vontade para responder.


2
Uma convenção comum é ter nomes de classe que LookLikeThis. Nesse ponto, você nem precisa de sufixos. (Isto é mais comum em Java, .net etc. Mas ele funciona em C ++ também.)
Chao

1
em última análise, esta é uma forma de notação húngara. E essa discussão é interminável. A favor, sou contra agora e aceito a solução da cHao. Por quê? Como eu usei a notação húngara por cerca de 4 anos para tudo, decidi fazer um projeto sem ele e não perdi nada. E não perdeu tempo com isso. Então eu a larguei completamente, pois aparentemente não tinha nenhum valor para mim. E eu nunca olhei para trás.
stijn

1
Veja esta pergunta para identificadores reservados (incluindo _t) stackoverflow.com/a/228797/14065
Martin York

Respostas:


16

Não há consenso nas comunidades C e C ++ em relação aos tipos de nomeação.

Embora o _tsufixo seja de fato reservado pelo POSIX , alguns defenderão o uso do _tsufixo para seus próprios tipos, enquanto outros argumentarão igualmente que você não deve tentar o destino, arriscando nomes duplicados com o POSIX.

Convenções de nomenclatura alternativas sugerem o uso de um prefixo para tipos como Cou T.


16

Acho os sufixos bastante feios e, portanto, evito _tetc. Uma boa alternativa é usar uma letra maiúscula para iniciar nomes de tipos, como Pointno exemplo acima.


3
e acho que é bom ter um estilo diferente dos tipos C padrão, assim que ler o código que você pode facilmente encontrar o que é a partir do programa cliente e qual é a API
Nikko

1
Também minha técnica favorita. Os tipos têm uma letra maiúscula inicial. Todos os outros identificadores não são do tipo e, portanto, são facilmente vistos.
Martin York

Eu sempre pensei que parecia muito feio também. É bom ver que os outros concordam comigo.
syb0rg

Eu só uso PascalCase para tipos de ponteiros (por causa de linguagens como C # e Java em que PascalCase significa classe, ou seja, referência a dados), mas entendo de onde você é.
YoYoYonnY 22/02

1

Depende de você. A menos que haja um conflito com as palavras reservadas que você deve seguir. No entanto, considere um cenário em que você está trabalhando em uma empresa e várias pessoas estão acessando a mesma base de código, e seu código chega a uma pessoa que não está ciente de seu hábito. Ele pode assumir que é um tipo reservado, especialmente se você escreve algo como point_t. Portanto, mantenha-o mais simples, por exemplo, point é mais simples que point_t. E se você quiser acrescentar algo a ele, acrescente o nome das iniciais.

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.