» »

[c++] stil kodiranja, informativno

[c++] stil kodiranja, informativno

Vesoljc ::

no, na formu se kar krešejo mnenja o tem kateri stil je boljši inu lepši. velik del tega je sicer čisto osebno mnenje, ampak naktere zadeve pravzaprev resno pripomorejo k boljši kodi. no preden se torej lotimo debate o tem, bi bilo fajn, da se najprej zmenimo, kako naj bi zadeva potekala. novega flamewar-a pač nočemo.
svojega stila pač tudi nočem vsiljevati, lahko bi pa skupaj zgradili da ultimativni ST c++ koding stajl 8-)

plan je tak da naredmo dve temi, eno sticky, ki bo vsebovala samo "čiste" infomracije inu primere ter drugo, kjer bomo kresali mnenja (lep primer je slovar v Z&T).
komentarji?
Abnormal behavior of abnormal brain makes me normal...

Sergio ::

Se absolutno strinjam.

Vprasanje je, ali je sedaj doticna tema ta cista, ali lahko semle notri ze zacnemo pisat stvari... :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Vesoljc ::

komot tudi sem
bring it on!

bi pa omenil tudi trud našega vrlega hatch-a, ki je v preteklosti že poskušal nekaj podobnega.

imho je dobro, da povemo kaj vse spada pod CS (coding style).
Abnormal behavior of abnormal brain makes me normal...

buba švabe ::

>>> komot tudi sem
Kako pač komu paše, ampak jaz pišem C++ kodo tak:

// Komentar

// Namespace: kratko ime, tri ali štiri črke, redko več. Lahko z malo ali z veliko
namespace Moj {

// Deklaracija razreda: brez C na začetku, oklepaj je v isti vrstici, zamiki
// so narejeni s tabulatorji, ki jih moj editor renderira s 4 presledki
class Razred : public BaseClass {
	private:
		// ime spremenljivke je z malo, brez "okraskov"
		int spremenljivka;
	
		// malo daljše ime spremenljivke: vse naslednje besede so z veliko
		int daljseImeSpremenljivke;
	
		// enum:
		enum Nastevanje {
			PRVI = 10,
			DRUGI,
			TRETJI,
			CETRTI
		} kateri;
	
	protected:
		// ime metode je z veliko
		void Metoda();
		int SeEnaMetoda() const;
		const char *InSeEna(int a, int b, const char *pointer, int &ref);
		virtual void Virtualna() = 0;
	
	public:
		// konstruktorji in destruktor
		Razred();
		Razred(int a);
		Razred(const Razred &objekt);
		~Razred();
	
		// operator
		bool operator==(const Razred &obj) const;
	
		friend class DrugiRazred;
};
}

// Definicija konstruktorja: initializer list v isti vrstici, če je spremenljivk
// malo, sicer vsaka v svoji vrstici; oklepaj v isti vrstici
void Razred() : BaseClass(), spremenljivka(0), daljseImeSpremenljivke(0) {
}

// ali pa takole:
void Razred(int a)
	:BaseClass(),
	spremenljivka(a),
	daljseImeSpremenljivke(0),
	kateri(PRVI)
{
}

// koda:
int Funkcija(int a, int b) {
	int rezultat = 0;
	
	// for zanka:
	for (int i=0; i<10; i++) {
		++rezultat;
	}
	
	// while zanka:
	while (true) {
		// malo bolj kompleksni pogoji: v oklepajih
		if ((a == b) || (rezultat > 15)) {
			break;
		}
		else {
			++rezultat;
		}
	}
	
	// do-while:
	do {
	} while (pogoj);
	
	// switch stavek:
	switch (a) {
		case 0: {
		}
		break;
		
		case 1: {
		}
		break;
		
		default: {
		}
	};
	
	return rezultat;
}


To pokrije večino konstruktov jezika C++. Vem, da nekateri stvari niso čisto konsistentne, ampak tak sem se navadil in tak jaz programiram. In za mene to deluje...

EDIT: Hm, barvanje in oblikovanje kode na tem forumu je pa bolj kot ne zanič...
če hočeš razumet rekurzijo, moraš najprej razumet rekurzijo

Zgodovina sprememb…

Vesoljc ::

taki primeri so kul ja...

paše pod CS tudi organiziranost/hierarhija datotek in map? :|
samo tistih, kje je source namreč...


> EDIT: Hm, barvanje in oblikovanje kode na tem forumu je pa bolj kot ne zanič...

da te primoz čuje :)
Abnormal behavior of abnormal brain makes me normal...

Zgodovina sprememb…

  • spremenil: Vesoljc ()

NoUse4AName ::

Osebno mi gre na živce stil, da se ne da začetni oklepaj v novo vrstico (java stil?)
npr:
void nekaj(){
}

Če zaključiš v novi vrstici pol začni v novi vrstici. Tudi presledki naredijo kodo veliko bolj
pregledno (še posebej če not natlačiš cel kup stvari:
for(int i=0;i< 298;i++)
for( int i = 0; i < 298; i++ )

kopernik ::

Oklepaji v novo vrsto ali ne, indent dva stolpca ali štiri, spaces vs. tabs, dolžina vrstice 80 ali 100 znakov, itd... vse to so samo stvari okusa in na to temo je bilo že ogromno natipkanega. Zato bi se jaz tem stvarem izogibal ...

Trubadur ::

Vela nujno za C++ ali tudi za druge jezike?:8)

Zgodovina sprememb…

  • spremenil: Trubadur ()

Vesoljc ::

jah nekatere zadeve so čist verjetno povsem enake ne glede na jezik. tko, da kaki splošni komentarji so seveda dobrodošli.
Abnormal behavior of abnormal brain makes me normal...

CCfly ::

namespace
{
        ...
}

class blah
{
        public / private / protected:
                ... 
}

sablona
funkcija() {
        if / while / for {
                ...
        }
}
"My goodness, we forgot generics!" -- Danny Kalev

Zgodovina sprememb…

  • spremenilo: CCfly ()

Gundolf ::

Bi rekel da je moj stil zelo podoben tistemu od buba švabe. Le da pišem z veliko začetnico izrecno le Namespace in tipe (classe, structe, enume, ...). Nikoli ne definiram spremenljivke na znotraj definicije tipa (primer: enum Neki {...} neki;). Funkcije se vedno začnejo z malo, tako kot tudi spremenljivke.

Kar se tiče presledkov mi je najbolj všeč če je podobno običajnemu textu oziroma v matematičnih formulah. Se pravi nobenega presledka za oklepaji oz. pred zaklepaji (ogaba), vejica je levostična, se pravi brez presledka pred njo in s presledkom za njo. Isto je s podpičjem. Tudi ni razmaka med imenom funkcije in oklepajem - f(x) in f[x] - matematični zapis pač. V formulah pa ponavadi presledke pred in za vsemi operatorji, le če so daljše potem spuščam presledke pri množenju in deljenju, oklepajev pa čim več, še posebej okoli bool operatorjev. Nikakor pa presledkov v ++i in i++;

Dve vrstici razmaka med bloki (razredi in definicijami funkcij). Po en razmak med zaključenimi deli znotraj funkcij/razredov. Komentarji pred tistim kar komentiram. Poravnava je na tri znake in pa kar je absolutno najpomembnejše, fonti so vsi iste širine. Delam pa še nekaj, kar drugje še nisem opazil, naučil sem se pa v pascalu. Vse spremenljivke pišem tako, da napišem tip, nato presledke nekje do 34. stolpca in potem ime. Tako nekako izstopajo iz kode (vsaj v C++ to pomaga) in imajo poravnana imena.

Edino kar nisem čisto siguren kako bi pisal, zato ker mi nobena oblika ni všeč, so predolge funkcije (če ne moreš vseh parametrov spraviti v isto vrstico, bodisi pri definiciji bodisi pri uporabi) in pa initializacija memberjev pri metodah (vsak v novo vrstico mi zaenkrat še najbolje izgleda, samo da ne vem kam bi stlačil prvega in kam znak ':')

Tukaj bi dodal še eno vprašanje, ki bi morda sodilo v čisto svojo temo - katere fonte kaj uporabljate?

CCfly ::

Bitstream Vera Monospace
"My goodness, we forgot generics!" -- Danny Kalev

Trubadur ::


 interface DB 
 {
 	public function __construct($username, $password, $host, $database, $persistant = FALSE);
        .............
 }

 class mysql implements DB 
 {
 
 	protected $username   = '';    //uporabnisko ime
	protected $password   = '';    //geslo

		public function __construct($username, $password, $host, $database, $persistant = FALSE)
		{
			$this->username   = $username;
			...........
		}

		public function __destruct() 
		{
			if(isset($this->result) AND !empty($this->result)) 
			{
				if(!mysql_free_result($this->result)) 
				{
					throw new DbException(mysql_error());
					return FALSE;
				}
			}
			if(!$this->persistant) 
			{
				if(!mysql_close($this->db)) 
				{
					throw new DbException(mysql_error());
					return FALSE;
				}
			}
		}


 }


Kaj pa komentarji? Redno komentirate kodo?

Zgodovina sprememb…

  • spremenil: Trubadur ()

BigWhale ::

Fonti? Fixed 11, of course :P

Kaj pa barve v editorju?

Gundolf ::

Ozadje je črno kakopak. Navadn tekst dokaj svetel a ne bel. Siv (ene 20%) ali pa malenkost (res le malenkost) pobarvan modro / zeleno. Komentarji zeleno - sivi. Stringi in cifre rdeči, glavne reserved words modre. Ostalo pa kakor kdaj.

buba švabe ::

Fuj, črno ozadje. Jaz mam belo ozadje, črn tekst, zelene komentarje, temno plave rezervirane besede, vijolične stringe, modrozelene cifre in temnorumene compiler direktive. Se pravi tak, kot je po defaultu v Scite-u. Font je pa Courier, samo sem glih zamenju z Bitstream Mono, pa mi je kar všeč...
če hočeš razumet rekurzijo, moraš najprej razumet rekurzijo

BigWhale ::

Jaz sem imel precej dolgo casa modro ozadje in rumene crke... ;> Kaj ces, borland je naredil svoje... ;)

Zdaj sem na default shemi KDevelopa... ki je sicer morilska... ampak nisem se sel spreminjat zadev... mogoce bom. :)

CCfly ::

Ne bela. Arrgggh moje oči. Temno modro ozadje in rumene črke.
"My goodness, we forgot generics!" -- Danny Kalev


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

križci krožci c # (strani: 1 2 )

Oddelek: Programiranje
5011977 (10636) Yacked2
»

POMOČ: C# Spremenitev spremenljivke medtem ko teče ukaz while

Oddelek: Programiranje
91648 (1405) Ericssony
»

Vmesnik v Javi

Oddelek: Programiranje
142277 (2060) Camel
»

[c++] prekrivanje konstruktorjev

Oddelek: Programiranje
171966 (1781) zavger
»

Coding Style

Oddelek: Programiranje
433467 (2659) 64202

Več podobnih tem