Archief - [PROG][c++] Universeel systeem voor naamgeving klassen,functions,variabelen... ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Ollie

Legacy Member
killgore zei:
1) hij had het over mensen die uw code bekijken, niet gijzelf.

Ik heb ook code van andere programmeurs geërfd.

killgore zei:
2) lees vich zen voorbeeld van hier enkele posts boven ivm dat device.

Als hij niet weet van welk type die variabele is dan is zijn code slecht gestructureerd.

EDIT: dt fout

messiah´

Legacy Member
Dankzij 't school ben ik eeuwig gedoemd om een combinatie tussen Hungarian en Leszynski Naming Convention te gebruiken. :) Ik doe dat uit pure gewoonte.

Nogal vanzelfsprekend dat Gebruikersnaam geen float gaat zijn ofzo, mabon. Ik denk dat het ook makkelijker is voor anderen om dan je code te begrijpen. 't Hangt ook af van de taal die je gebruikt. In VB.Net zal'k LNC gebruiken, in C# meer de 'camel', maar bijvoorbeeld voor formulierobjecten vind ik het superhandig.
txt - textbox
btn - button
chk - checkbox
lbl - label
etcetera

Tyfius

Legacy Member
C++: klassen in PascalCase, functies in camelCase en variabelen gans in kleine letters, probeer naar 1 woord te herleiden en duidelijke naamgeving.

C#: klassen en functies in PascalCase, variabelen in camelCase, vaak met het type ervoor, afgekort.

killgore

Legacy Member
Ollie zei:
Ik heb ook code van andere programmeurs geërfd.

Als hij niet weet van welk type die variabele is dan is zijn code slecht gestructureerd.

EDIT: dt fout
Ik heb het eerder gezegd: ik pas die notatie nog maar zeer zelden toe, waar ze imho dus nut heeft.
Jij doet trouwens alsof ik zeg dat ze overal moet toegepast worden (waar ek me dus wel achter u punten schaar).

voor de rest gebruik ek dus die PascalCase/camelCase notatie met idd zo duidelijk mogeljike naamgevingen :).

Vich

Legacy Member
Ollie zei:
Door er een duidelijke naam aan te geven natuurlijk. Ik ga geen double waarde in een variabele genaamd firstName steken.
forloRn_ zei:
Die Hungarian-methode vertelt je ook niet wat een variabele doet, dus dat is een loos argument. En, zoals Ollie hierboven zei, als je het ding een duidelijke naam geeft, moet je je toevlucht niet zoeken tot die prefixen.

Zoals ik eerder al aangaf: dat kan je niet van een naam aflezen. firstName kan een string zijn, een string reference, een pointer naar een char reeks, een char array, al dan niet const etc.

Je kan van de variabele-naam enkel lezen wat voor functie het heeft en door de prefix kan je zien waar die variabele uit beestaat.

Die heeft waarschijnlijk een IDE die weergeeft van welk type een variabele is.
Dat zou betekenen, dat als je nieuwe code onder je neus krijgt, je overal met je muis over élke variabelen moet wachten op de tooltips! No thanks!
Nogmaals: dit is ok voor kleine projecten, maar voor grotere projecten is dat echt niet te doen.
Zelf ben ik ook pas overgestapt naar een "uniforme standaard"(semi-hungarian) vanaf dat ik een groter project begon.

Ollie zei:
Ik heb ook code van andere programmeurs geërfd.
Als hij niet weet van welk type die variabele is dan is zijn code slecht gestructureerd.

EDIT: dt fout

Dat heeft totaal niks met structuur te maken, maar gewoon met het feit dat je niet van alle variabelen kan weten wat ze zijn, énkel wat ze zouden kunnen doen. Als jij bij mij op't werk de variabelen van de +- 5 miljoen regels programmeercode van buiten kan leren, dan is dat knap, maar de meeste mensen hebben die gave niet.

En begrijp me dus verkeerd! Ik probeer hier niemand om te praten om Hungarian te gebruiken(dat doe ik zelf ook niet volledig). Waar ik wél 100% van overtuigd ben is dat het een belangrijke toegevoegde waarde heeft voor grote projecten.

Ollie

Legacy Member
Vich zei:
Zoals ik eerder al aangaf: dat kan je niet van een naam aflezen. firstName kan een string zijn, een string reference, een pointer naar een char reeks, een char array, al dan niet const etc.

Hoe zien de accessors van jou classes er uit? GetLPSZFirstName() of GetFirstName()?

Vich zei:
Je kan van de variabele-naam enkel lezen wat voor functie het heeft en door de prefix kan je zien waar die variabele uit beestaat.

Je weet wanneer en in welke context je een variabele moet gebruiken maar je weet niet van welk type die variabele is?

Vich zei:
Dat zou betekenen, dat als je nieuwe code onder je neus krijgt, je overal met je muis over élke variabelen moet wachten op de tooltips! No thanks!

Dat moet af te leiden zijn uit de context van gebruik.

Vich zei:
Dat heeft totaal niks met structuur te maken, maar gewoon met het feit dat je niet van alle variabelen kan weten wat ze zijn, énkel wat ze zouden kunnen doen. Als jij bij mij op't werk de variabelen van de +- 5 miljoen regels programmeercode van buiten kan leren, dan is dat knap, maar de meeste mensen hebben die gave niet.

Dan moet ik toch terugkomen op uw DeviceID vorbeeld. Op één of andere manier weet jij wanneer (en dus in welke context) jij die variabele moet gebruiken maar je weet niet van welk type die variabele is?

Vich

Legacy Member
Ollie zei:
Hoe zien de accessors van jou classes er uit? GetLPSZFirstName() of GetFirstName()?
Bij pointers is het GetObjectPtr(), bij gewone variabelen is het GetObject(). Hier pas ik geen prefixes toe, want waar het gebruikt wordt in de code wordt het uiteindelijk toegewezen aan een variabele en die zal de nodige prefixen hebben opdat duidelijk is waar het voor dient:
iTest = GetTest();
Op het moment dat je het typt zegt je IDE wat het is en op het moment dat je het leest zie je dat het toegewezen wordt aan een int dit Test noemt.
Je weet wanneer en in welke context je een variabele moet gebruiken maar je weet niet van welk type die variabele is?
Nee, dat zeg ik niet, ik zeg:
Een variabele-naam(zonder prefix) beschrijft wat voor doel het object heeft, niet wat voor eigenschappen het heeft en ook niet hoe dat object voorgesteld wordt.
De prefix kan ervoor zorgen dat je net iets meer over die declaratie te weten kan komen en dus bijgevolg ook meer over de interne voorstelling.

Dat moet af te leiden zijn uit de context van gebruik.
[...]
Dan moet ik toch terugkomen op uw DeviceID vorbeeld. Op één of andere manier weet jij wanneer (en dus in welke context) jij die variabele moet gebruiken maar je weet niet van welk type die variabele is?
Dat kán je niet altijd uit de context afleiden, soms ís er gewoon geen context.
Hier onder staat een voorbeeldje, dat zegt altijd meer:

Code:
// Code zonder prefixes, je kan het verkeerd interpreteren:
message->SetText("blaat");				// Gaan we een message versturen later die we nu even setten op "blaat"?
objects->SetColor(COLOR_WHITE);		// Maak je de objecten wit?

// Dezelfde code, maar met prefixes, het is moeilijk om het verkeerd te interpreteren. "go" staat voor "Gui Object" en Ptr natuurlijk voor pointer:
goMessagePtr->SetText("blaat");			// Nee, we stellen de tekst van het GUI object in dat een message toont op het scherm
goObjectsPtr->SetColor(COLOR_WHITE);	// Nee, je stelt de kleur van het GUI object in

Je kan wel zeggen dat je de nodige info uit de context kan halen, maar deze code zou gerust afgezonderd in een Init() member kunnen staan, waar dus geen context is.

Als Microsoft het gebruikt, dan kan het toch niet zó fout zijn, toch? Heb jij eigenlijk uberhaupt al ervaring met grote projecten(en dan heb ik het niet over 10.000 lijntjes, maar een veelvoud daarvan)?

killgore

Legacy Member
Voor je begint dat winapi en dergelijke (waar ms dus die not. gebruikt) te oud is.

Half life 2 engine gebruikt zover ek mij herinner ook soms de hungarian notatie en ik denk niet da ge kunt ontkennen dat die ervaring missen met grote programmatieprojecten.

Ollie

Legacy Member
Vich zei:
Dat kán je niet altijd uit de context afleiden, soms ís er gewoon geen context. Hier onder staat een voorbeeldje, dat zegt altijd meer:

Code:
// Code zonder prefixes, je kan het verkeerd interpreteren:
message->SetText("blaat");				// Gaan we een message versturen later die we nu even setten op "blaat"?
objects->SetColor(COLOR_WHITE);		// Maak je de objecten wit?

// Dezelfde code, maar met prefixes, het is moeilijk om het verkeerd te interpreteren. "go" staat voor "Gui Object" en Ptr natuurlijk voor pointer:
goMessagePtr->SetText("blaat");			// Nee, we stellen de tekst van het GUI object in dat een message toont op het scherm
goObjectsPtr->SetColor(COLOR_WHITE);	// Nee, je stelt de kleur van het GUI object in

Je kan wel zeggen dat je de nodige info uit de context kan halen, maar deze code zou gerust afgezonderd in een Init() member kunnen staan, waar dus geen context is.

Een init member heeft wel een context, namelijk de class waarin hij staat en dewelke hij moet initten. In dit geval zou die init methode in een Window/Frame/Dialog/eender welke GUI container class staan.

Als je de init methode zelf schrijft mag ik aannemen dat je weet wat message is, anders zou je het niet gebruiken, en als je de de init methode moet wijzigen dan zou die methode gedocumenteerd moeten zijn (1) en zou je de interface (header) van de class moeten kennen (2). Ik begin geen code te wijzigen die ik niet ken en waarvan ik niet weet wat ze precies doet enkel en alleen omdat die code de hungarian notatie gebruikt en weergeeft van welke type een variabele is.

Vich zei:
Als Microsoft het gebruikt, dan kan het toch niet zó fout zijn, toch?

Microsoft is verantwoordelijk voor de monstrositeit genaamd Win32. Die mannen zijn allesbehalve een referentie.

Vich zei:
Heb jij eigenlijk uberhaupt al ervaring met grote projecten(en dan heb ik het niet over 10.000 lijntjes, maar een veelvoud daarvan)?

En het aantal lijnen in een project doet ertoe omdat......? Of denk jij mischien dat ik mijn volledige codebase uit het hoofd ken? Toegegeven, ik schrijf geen classes van 10.000 lijnen.

Vich

Legacy Member
Ollie zei:
Microsoft is verantwoordelijk voor de monstrositeit genaamd Win32. Die mannen zijn allesbehalve een referentie.
Haha, ik had me voorgenomen dat als je zoiets zou replyen, dit m'n laatste bericht zou zijn('t was nogal voorspelbaar dat je zoiets zou antwoorden). Dus bij deze m'n laatste reactie.
(en nee, ik ben geen MS-fanboy, ik werk voor een directe concurrent van hun)

En het aantal lijnen in een project doet ertoe omdat......?
Kijk, daar beantwoord je m'n vraag(wel met een andere vraag, maar toch...).
Als je niet ziet dat het aantal lijnen code toedraagt aan de complexiteit van een project, dan is het nutteloos om verder te discussiëren.

Of denk jij mischien dat ik mijn volledige codebase uit het hoofd ken? Toegegeven, ik schrijf geen classes van 10.000 lijnen.
Le-zen! Ik zei juist dat ik van niemand zoiets verwacht én er stond duidelijk "projecten", niet "classes".

Anyway, ga maar verder met die blinddoek rondlopen, loze argumenten spuwen en woorden verdraaien, van mij zal je geen last meer hebben :wtf:

[edit]
Margaret Thatcher:
To me, consensus seems to be the process of abandoning all beliefs, principles, values and policies. So it is something in which no one believes and to which no one objects.

Je onderschrift geeft trouwens goed weer in welke stijl je posts geschreven zijn in dit topic.

Ollie

Legacy Member
Vich zei:
Kijk, daar beantwoord je m'n vraag(wel met een andere vraag, maar toch...). Als je niet ziet dat het aantal lijnen code toedraagt aan de complexiteit van een project, dan is het nutteloos om verder te discussiëren.

Wie spreekt er over complexiteit van een project? Ik dacht dat we het over variable namen hadden?

Vich zei:
Le-zen! Ik zei juist dat ik van niemand zoiets verwacht én er stond duidelijk "projecten", niet "classes".

Anyway, ga maar verder met die blinddoek rondlopen, loze argumenten spuwen en woorden verdraaien, van mij zal je geen last meer hebben :wtf:

Inderdaad, er stond projecten. Maar zat jij niet eerder uit te leggen dat jij aan de hand van "content assist" bij function calls te weten kwam van welk type een variabele die teruggestuurd werd was? Wel dan, buiten lokale variabelen en variabelen teruggestuurd door function calls blijven er enkel variabelen over die member zijn van de class die je gebruikt.

Dat een project 1,000,000 lijnen heeft is dus IRRELEVANT (en deze post ook blijkbaar want je bent ocharmkes al gaan lopen).

killgore

Legacy Member
Ollie zei:
Microsoft is verantwoordelijk voor de monstrositeit genaamd Win32. Die mannen zijn allesbehalve een referentie.

Oe, Anti-ms freakje :)?

Geef nu eens deftig wat er MIS is met windows (niet wat er allemaal beter is aan linux, maar er echt mis is aan windows).

En de complexiteit van een project doet er wel degelijk toe, des te meer omdat je met meerdere gespecialiseerde coders samenwerkt en het mogelijk moet zijn dus snel code van een ander te interpreteren (bv. voor te helpen bij een systeem waarin jij gespecialiseerd bent) zonder dat iemand het geheel van dat systeem moet kennen (dus alle regels moet gaan lezen voor te bekijken hoe elke variabele gedeclareerd is).

Ollie

Legacy Member
killgore zei:
Oe, Anti-ms freakje :)?

Geef nu eens deftig wat er MIS is met windows (niet wat er allemaal beter is aan linux, maar er echt mis is aan windows).

En ik ben degene die hier woorden verdraait? Windows is een operating system, Win32 is een API, ken je het verschil?

killgore zei:
En de complexiteit van een project doet er wel degelijk toe, des te meer omdat je met meerdere specialisten samenwerkt en het mogelijk moet zijn dus snel code over te dragen zonder dat iemand het geheel van jouw systeem moet kennen (dus alle regels moet gaan lezen voor te bekijken hoe elke variabele gedclareerd is).

instanceVanAndereZijnClass-> "content assist"
this-> "content assist" .......wow, complex zeg.

Vich

Legacy Member
Ollie zei:
Da's mijn signature.
Omdat je er om vraagt, het niks met de discussie te maken heeft en ik het gewoon niet kan laten(ik neem je bash-reactie hierna er gerust wel bij) :

Vich zei:
Je onderschrift geeft trouwens goed weer in welke stijl je posts geschreven zijn in dit topic.
__________________
Own: [AlterNova project] [LifeIsDigital.net]
Co-op:[GameDesign.be]
>>>> Last edited by Vich : Today at 19:46.


From wiki reference:Among people working on virtual reality and cyberspace interfaces, an avatar is an icon or representation of a user in a shared virtual reality.

Ik vond dat je onderschrift een mooie voorstelling was van wat je schreef.

killgore

Legacy Member
Ollie zei:
En ik ben degene die hier woorden verdraait? Windows is een operating system, Win32 is een API, ken je het verschil?
Win32 is geen api

Win32 kan op alles slaan, een van de 32-bits versies van windows of een van de api's.
Wat in godsnaam is er slecht aan de WINAPI :s, das verdomme een vreselijk goeie platform-api (als je enkel GUI moet hebben kan je beter naar andere zaken op zoek gaan, das mssch juist). Als je het op mfc hebt kan ek er nog inkomen :p.

Maar daarnaast: MS zijn ook de makers van .net, c#, visual studio, ...

Ook allemaal dikke rommel zeker?

instanceVanAndereZijnClass-> "content assist"
this-> "content assist" .......wow, complex zeg.
dat is als je daadwerkelijk typt, ik had het nog steeds over een stukje code dat er al was en dat je even moet overlezen. Als je bij 5 regels code met pakweg 6 verschillende variabelen telkens op de tooltip moet wachten ben je veel langer bezig dan dat je dit onmiddelijk uit een (o erg) iets lelijkere naam kan afleiden. En vaak is het wel iets meer dan 5 regels code

wat doe je trouwens van job :)?

Ollie

Legacy Member
killgore zei:
Win32 is geen api

Google eens naar win32 API. Zoek eens op amazon naar de referentie wat betreft win32 API programmeren: Charles Petzold. Bekijk de front cover van zijn boek "Programming Windows Fifth Edition" (Fifth in mijn geval dan).

killgore zei:
Wat in godsnaam is er slecht aan de WINAPI :s, das verdomme een vreselijk goeie platform-api (als je enkel GUI moet hebben kan je beter naar andere zaken op zoek gaan, das mssch juist). Als je het op mfc hebt kan ek er nog inkomen :p.

De WINAPI is geschreven in C (dat zegt genoeg). Hun zielige poging tot port naar C++ met MFC is ook nogal mislukt naar mijn mening.

killgore zei:
Maar daarnaast: MS zijn ook de makers van .net, c#, visual studio, ...

Ook allemaal dikke rommel zeker?

Waarom zou dat dikke rommel zijn?

killgore zei:
dat is als je daadwerkelijk typt, ik had het nog steeds over een stukje code dat er al was en dat je even moet overlezen. Als je bij 5 regels code met pakweg 6 verschillende variabelen telkens op de tooltip moet wachten ben je veel langer bezig dan dat je dit onmiddelijk uit een (o erg) iets lelijkere naam kan afleiden. En vaak is het wel iets meer dan 5 regels code

Waarom zou ik moeten weten van welk type een variabele is (wat moet ik met die 5 lijnen doen)? Moet ik de exacte types kennen van alle variabelen om te weten te komen wat een stuk code doet?

killgore zei:
wat doe je trouwens van job :)?

Ik ben een Java developer bij een bank.

NecroNeo

Legacy Member
Gezien er geen universeel systeem is, en het dus een kwestie van smaak is (waarover discussieren niet echt veel nut heeft). Stel ik voor dat je gewoon een stukje code post waarin jij je "stijl" gebruikt en een beetje uitleg geeft van wat en waarom. Lijkt me een stuk leerrijker en nuttiger (voor diegene die nog niet aan grote projecten toe zijn). my 2 cents
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan