C ve C ++ programlarındaki türleri nasıl işaretlemeliyim?


12

Gelen benim bu cevap , kullandığım _ten iyi, tartışmalı bitti türleri, sonunda. Mevcut projelerimde kullandığım uygulama bu.

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

Bunun, stddef.hlike size_tveya ' dan C tipleriyle tutarlı olması amaçlanmıştır ptrdiff_t. Ancak, sorularımdaki bazı yorumlara göre, _tpostfix POSIX için ayrılmış gibi görünüyor. Bunun yerine ne kullanmalıyım _t? Yoksa _tyine de kullanmaya devam etmeli miyim ?

Bu soru hem C hem de C ++ içindir. Bu dillerin farklı kuralları varsa, cevap vermekten çekinmeyin.


2
Ortak bir kural, LookLikeThis sınıf isimleri olması. Bu noktada soneklere bile ihtiyacınız yok. (Bu Java, .net vb. İçin daha yaygındır. Ancak C ++ ile de çalışır.)
cHao

1
sonuçta bu bir Macar Gösterimi şeklidir. Ve bu tartışma sonsuz. Ben şimdi ona karşıyım ve cHao'nun çözümü ile devam ediyorum. Neden? Çünkü Macarca Notasyonunu her şey için yaklaşık 4 yıl kullandım, sonra onsuz bir proje yapmaya karar verdim ve hiç kaçırmadım. Ve zaman kaybetmedi. Görünüşe göre benim için hiçbir değeri olmadığı için tamamen düşürdüm. Ve asla geriye bakmadım.
stijn

1
Ayrılmış tanımlayıcılar (dahil _t) için bu soruya bakın stackoverflow.com/a/228797/14065
Martin York

Yanıtlar:


16

C ve C ++ topluluklarında adlandırma türleri konusunda fikir birliği yoktur.

_tSonek gerçekten POSIX tarafından ayrılmış olsa da , bazıları _tkendi türleriniz için de son eki kullanmayı savunacak , bazıları da aynı şekilde POSIX ile yinelenen adları riske atmaktan kaçınmayacağınızı iddia edecektir.

Alternatif adlandırma kuralları, Cveya gibi türler için bir önek kullanılmasını önerir T.


16

Ben ekleri oldukça çirkin buluyorum ve benzeri önlemek _tvs. iyi bir alternatif yüzden, tip isimleri başlatmak için bir harf kullanmaktır Pointyukarıdaki örnekte.


3
ve standart C tiplerinden FARKLI bir stile sahip olmak güzel buluyorum, bu yüzden kodu okurken kolayca istemci programından ne olduğunu ve API'yi bulabilirsiniz
Nikko

1
Ayrıca en sevdiğim teknik. Türlerin ilk harfi büyüktür. Diğer tüm tanımlayıcılar tip değildir ve bu nedenle kolayca görülebilir.
Martin York

Her zaman da oldukça çirkin göründüğünü düşündüm. Başkalarının benimle aynı fikirde olduğunu görmek güzel.
syb0rg

Yalnızca işaretçi türleri için PascalCase kullanıyorum (C # ve Java gibi diller nedeniyle PascalCase sınıf anlamına gelir, yani verilere referans) ama nereden geldiğini anlıyorum.
yyny

1

O size bağlı. Ayrılmış kelimelerle bir çatışma olmadığı sürece gitmekte fayda var. Bununla birlikte, bir şirkette çalıştığınız ve birden fazla kişinin aynı kod tabanına eriştiği ve kodunuzun alışkanlığınızın farkında olmayan bir kişiye ulaştığı bir senaryo düşünün. point_t gibi bir şey yazıyorsunuz. Yani, daha basit tutun, örneğin nokta point_t'den daha basittir. Ve buna bir şey eklemek istiyorsanız, adının baş harflerini ekleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.