C++ forráskódok indentálása

 ( dandor | 2008. április 10., csütörtök - 13:06 )

Sziasztok!

Gondolom sok "egeszségesen" lusta hup olvasó használja az indent névre hallgató c/c++ kódszépítő programkát. A kérdésem az lenne, hogy Ti milyen stílust (indent paramétereket) favorizáltok c++ kódokhoz és miért (vagy esetleg miért nem használtok kódszépítőt). Nyilván ez nagyon szubjektív dolog, de azért fel lehet hozni számos objektív érvet áttekinthetőség vagy egyéb szempontokat figyelembe véve.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

En vim kodszepitovel rendezem el. alapbealitasok szerint. (=)

Egyebkent C kodnal linux kernel stilusa tetszik, kiveve, hogy { jeleket ujsorba teszem, es ugyan annyival betolva irom a parjat. (tabnyi eltalas melysegenkent)

Kilometer hosszu kurvasok tipussal mahinalo c++ kudonal, neha hasznosabb, ha a
visszateresi tipus kulon sorban van, ill. minden argumentum, kulon sort kap implementalaskor.

Hivaskor a nagyon sok hosszu argal rendelkezo fuggvenyeket methodusokat, szinten erdemes tordelni, egyebkent nem.
(minden arghoz jar egy megjegyzes is)

Ha if, vagy ciklus utan nem blokk jon, akkor azt is beljebb tolom 2 space -el.

+1 :)
amúgy "kódszépítő" normális szerkesztő mellett felesleges, a vim pedig abszolút profi ebben (is)

astyle --style=kr

KNF

--
Segmentation violation -- Core dumped blues

A behúzásokat belerakja az emacs szerkesztés közben. Szerintem érdemes eleve úgy írni a kódot, mint később ráereszteni az indent-et. Én legalábbis azért használom a behúzásokat, hogy könnyebben át tudjam tekinteni a kódot, és ez már megírás közben is hasznos.

Mivel kezdő vagyok, előbb megpróbálok minél szebb kódokat írni, ráér az ilyesmi még nekem.

...aztán van az, hogy típus * mutató;

Amikor Pascalról átnyergeltem C-re, akkor így írtam:

típus* mutató;

Később C-sen gondolkodva, még C++-ban is:

típus *mutató;
típus &ojjektum;

Ma C++-osan:

típus* mutató;
típus& ojjektum;

Back to pascal?

Nem a Pascal miatt, hanem állítólag a C++-osok így szokták. Gondolom, a C-s logika az volt, hogy a

típus *változó;

azt jelenti, hogy a *változó az egy adat, egy ,,csillagos változó'', még akkor is, ha a fordítónak szintaktikailag a ,,változó'' azonosító a lényeges, ami pedig mutató.

C++-ban megjelentek a referenciák, aminek - mint mutatónak - nem tudsz értéket adni, csak inicializáláskor. Nincs rá értelme a -> operátornak sem, a pontnak viszont van. A referencia maga az adat. Így az & jelet inkább a típushoz írják. És akkor már a *-ot is.

Én így sejtem.

Sztem ha már indokokat keresünk egyik vagy a másik jelölés mellett, akkor érdemesebb ezt használni:
típus *változó1, *változó2;

Méghozzá azért, mert ha vki nem ismeri elég pontosan a nyelvet (és/vagy mondjuk mert már 48 órája ébren van), akkor hajlamos a következő deklarációban azt hinni, hogy mindkét változó mutató:
típus* változó1, változó2;

Elvégre mindkét változó típusa típus*, nemde? ;) Hát nem egészen.

kl223

Ebben is van ráció.

Ugyanakkor (ha csapatban dolgozol) ilyen deklarációt nem nagyon illik leírni, pont a könnyű félreérthetőség miatt.

En a java alap formazasat kovetem (amit pl. a netbeans is csinal). keves vele a gond, jol atlathato, jol gepelheto is. Megszokas kerdese.

Nem tartozik szorosan a felvetett kérdéshez, de a kódolási stílushoz mindenképpen:

A Luxrenderen van egy nagyon jól összefogott - és jól kinéző - útmutató, ami jól jöhet, ha saját projekthez kell ilyet készíteni, illetve rávilágít, hogy mennyi "stíluselemre" kell figyelni programozás közben.

--
- Name ONE thing that your Linux computer can do that my MAC can't!
- Right click.

Alapvetoen nem rossz (ugy 95%-ban korrekt), bar nehany helyen de facto standardnak nyilvanit nem igazan elterjedt, es indokolhatatlan dolgokat. (Pl. case-nel space a kettospont elott. En ilyet meg sosem lattam, es kb. semmi ertelme nincs.)

int amit(int a,
         int vallalat)
{
    megkovetetel();
    /* hiaba utalom :P*/
}

egyebkent szerintem teljesen mindegy hogy milyen - a lenyeg, hogy 1 faban mindenki ugyanugy csinalja
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

Allman.
Nekem a legjobban átlátható a szerkezet, és a legkönnyebb a kommentezés, és többnyire csak a sorokat kell kezelni (vim-ben egyszerű(bb)).

Egyébként van egy jó összehasonlítás a wikipedián.

+1

Vim tudja esetleg a kommenteket is úgy elrendezni, hogy egy oszlopban kezdődjenek?
pl. Eredeti:

if(x<y) {
  fv(); // fv
  function(x); // function
}

Rendezett:

if(x<y) {
  fv();        // fv
  function(x); // function
}

Nem probaltam, de: Align

Köszi, ez elég jónak tűnik.
Használata: kijelölöd Visual Mode-ban a sorokat, majd \acom (ez egy map), és meg is formázta a kommenteket.
Kár hogy nem built-in.