webForumDet fria alternativet

Enkel metod, vilket är att föredra

Java

4 svar · 202 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

Hej!
Kom inte på någon bättre topic. Jag har en enkel fråga om hur jag bäst ska lösa en liten metod.

Låt oss säga att jag har två överlagrade konstruktorer i en klass som skapar en rektangel. Den ena tar emot 1 sidaX och den andra sidaX och sidaY. Den som bara tar emot sidaX ska användas om man vill skapa en kvadrat. Jag har sedan en metod som räknar ut arean och jag undrar kortfattat vilken variant som är att föredra, och varför.

alt1. Där jag automatiskt sätter värdet till sidaY detsamma som värdet på sidaX. Metoden för att räkna ut arean sker rakt av

public cRectangle2(int newRectangleSideX){
        rectangleSideX = newRectangleSideX;
        rectangleSideY = newRectangleSideX;
}
    
public int area(){
        int rectangleArea = 0;
        rectangleArea = (getSideY() * getSideX());      
        return rectangleArea;
}

alt2. Sätter bara värdet på sidaX men i metoden för area kollar jag om sidaY är noll osv.

public cRectangle(int newRectangleSideX){
        rectangleSideX = newRectangleSideX;
}

public int area(){
        int rectangleArea = 0;
        if (getSideY() == 0)
        {
            rectangleArea = (getSideX() * getSideX());
        }
        else
        {
            rectangleArea = (getSideY() * getSideX());
        }
        
        return rectangleArea;
}

tacksam

Medlem sedan jan. 20021 122 inlägg
#2

Jag skulle helt klart använda alternativ 1, allt för att slippa en if-sats :)

Medlem sedan dec. 19996 522 inlägg
#3

För mig känns det som att man inte ska pilla med allt för mycket onödiga saker i konstruktorn, men jag kan ju ha fel. Ingen annan som har ett lite mer utömmande svar än pettsons :) tack iaf pettson

Medlem sedan feb. 2003216 inlägg
#4

håller med pettsson om att alternativ 1 verkar bäst. Du vill ju ändå att den okända sidan ska vara samma som x så det är lättast att sätta det rakt i konstruktorn. En motivering till att inte välja alternativ 2....du slipper göra en massa metodanrop och jämförelser vilket sparar på resurserna och gör ditt program lite snabbare. Att pilla med en massa if-satser har en förmåga att generera fel om man har missat att tänka på något.
Att man inte skall "pilla med för mycket onödiga saker i konstruktorn" är ju iof en sund inställning men du gör ju inga avancerade metodanrop eller dylikt utan sätter bara en variabel. Räcker det? ;)

Medlem sedan jan. 20021 122 inlägg
#5

Tsk... Det var ju ungefär det jag menade, läser du inte mellan inläggen erka? ;)

1375 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
214 ms — deklarationer (db)
0 ms — hämta statistik (cache)
1158 ms — hämta tråd, inlägg och bilagor (db)
214 ms — ändringar (db)