Skrivet av Teknocide:
För mig antyder koden if (whatever) { ... att whatever är en bool; det är inte helt klart att referensen pekar på ett komplext objekt. Samma sak med överlagringen av = på .copyValuesFrom(...) (går det verkligen? känns farligt på annat än structs..)
För jämförande operatorer (<, >, !=, == etc) tycker jag överlagring är jättepraktiskt!
Det hänger väl mer på hur tydlig namngivningen är av alla variabler/attribut i koden, samt hur insatt man är i koden.
Ex.
Döper du enligt detta:
bool var1;
MyClass var2;
void myFunction() {
if (var1 && var2)
{ ... }
}
Så kommer den som läser det ha svårt att se vad var1 och var2 är för något. Detta är inte heller ett bra sätt att namnge variabler/attribut.
Samma sak som att namnge variabler/attribut med a, b, c, d. Endast den som är insatt i koden kommer förstå, men ändå ha svårt ibland.
Tar man däremot följande två:
Det första är en form av "Hungarian Notation":
bool bVar1;
MyClass oVar2;
...
Så ser man sedan i koden att "bVar1" är ett bolskt värde (då man följer reglerna att alla bolska variabler/attribut döps med "b", integer med i, double med d osv.) Då man kommer till if satsen, ser man tydligt sedan att det är ett boolskt värde samt ett objekt som kontrolleras.
Ett annat sätt att döpa, är med ord som beskriver vad variablen/attributet är för något:
bool IsGood;
MyClass InfoObject;
Här ser man igen i koden att "InfoObject" är ett objekt, och IsGood borde vara något boolskt värde (lite dåliga namn just nu, men som exempel).
Citerar från Wikipedia istället:
vs.
weekly_pay = hours_worked * pay_rate;
Så det jag säger är. Allt beror på hur du namnger allting i koden. Dålig namngivning av variabler/attribut, medför att man får svårt att förstå koden.
Jag läste förut en artikel, att namnge med tydliga namn (sista kodexemplet), så en läsare förstår vad koden gör. Och att behöva lägga till kommentarer i sådan kod, medför att man misslyckats i sina namngivningar.
Då jag kodar blir det vanligtvis Hungarian Notation. Men jag håller på att försöka byta till att döpa enligt funktion/användning, för att se hur bra det går.