---
title: "Enkel metod, vilket är att föredra"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/90873-enkel-metod-vilket-är-att-föredra"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "erka"
published: "2003-11-20T15:07:27.000Z"
updated: "2003-11-20T18:35:48.000Z"
replies: 4
views: 205
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/90873-enkel-metod-vilket-är-att-föredra"
---

# Enkel metod, vilket är att föredra

## #1 — erka, 2003-11-20T15:07Z

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

Permalänk: https://www.webforum.nu/p/90873

## #2 — pettsson, 2003-11-20T16:14Z

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

Permalänk: https://www.webforum.nu/p/1211290

## #3 — erka, 2003-11-20T17:29Z

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

Permalänk: https://www.webforum.nu/p/1211322

## #4 — mangan, 2003-11-20T17:53Z

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

Permalänk: https://www.webforum.nu/p/1211340

## #5 — pettsson, 2003-11-20T18:35Z

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

Permalänk: https://www.webforum.nu/p/1211350

---

Tråden på webben: https://www.webforum.nu/amne/java/90873-enkel-metod-vilket-är-att-föredra
