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)?