Jak to jest z tym kodem?

0

Hej, stworzyłem dwa projekty jeden z dłuższym kodem, a drugi z krótszym. Wynik kompilacji jest ten sam. Moje pytania brzmią czy:
1) Zoptymalizowałem kod czy może go "zjanuszowałem"?
2) Jeśli zoptymalizowałem to po co była dodatkowa metoda i typ return.

Kody:
Dłuższy:

public class Funkcje 
{   
    public static void main(String[] args) 
    {
        System.out.println("Obwód koła wynosi " + obliczObwodKola(10.0) );
    }
    public static double obliczObwodKola(double r)
    {
        double obwodKola = 2(razy)*Math.PI(razy)*r; 
        return obwodKola;               
    }   
}

Krótszy:

public class Test 
{
    public static void main(String[] args) 
    {
        double obwodKola = 2*(razy)Math.PI*(razy)10.0;
        System.out.println("Obwód koła wynosi " +obwodKola);
    }

}
1

Zjanuszowiłeś. Bo co jeśli chcesz policzyć obwód w kilku miejscach? Będziesz kopiować ten kod X razy? ;] Jedyna optymalizacja jaka się tam wydawała sensowna to:

    public static double getCircumference(double r)
    {
        return 2*Math.PI*r; 
    }   

Albo w ogóle osobna klasa Circle jeśli masz takich funkcji więcej i operacji na kółkach.

0

To nie jest "projekt", tylko snippet.

Ale nie chodzi tylko o kopiowanie później tego kodu wielokrotnie, ale też czytelność. W przypadku, gdy jest to prosty wzór, który zna każdy gimnazjalista, nie jest to aż tak ważne. Ale co, gdy dostaniesz wzór na objętość czworościanu ściętego? Wtedy nie masz pojęcia "co" kod robi, wyłącznie "jak" - mnoży przez siebie trzy liczby.

Nadawaj rzeczom nazwy tak, byś wiedział o czym jest program, bez komentarzy czy dziwnych printfów.

0

Zależy co masz na myśli pisząć "zoptymalizowałem". Jeśli chodzi Ci o uzyskanie mniejszej złożoności/skrócenie czasu działania programu. To może i jest to jakaś "optymalizacja". Jedno wywołanie metody mniej, stack krótszy o jedną metodę. Czy to w tym przypadku ma znaczenie? Oczywiście, że nie ma.

To co zrobiłeś to jedna z metod refaktoryzacji - "inline". Jeśli pisząc "zjanuszowałem" miałeś na myśli zepsułem. To moja odpowiedź brzmi, to zależy ;). W niektórych przypadkach jednolinijkowe metody mają większy sens niż w innych. W innych "inline" obliczeń/zmiennej bardziej się nadaje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0