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.