Konwerter jednostek - prośba o ocenę struktury kodu

0

Piszę sobie aktualnie konwerter jednostek.
Fragment:

package konwerterjednostek;

import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        
        //Menu startowe
        mainMenu main = new mainMenu();
        main.Menu();
        
        //Główny kod
        switch (input.nextInt())
        {
            case 1: //Temperatura
                Temperature temp = new Temperature();
                temp.displayMenu();
                temp.Menu();
                break;
            default:
                System.out.println("Niepoprawny wybór.");
        }
    }
}

Fragment klasy Temperature:

package konwerterjednostek;

import java.util.Scanner;

public class Temperature
{
    double inCel, inFahr, inKelv, degCel, degFahr, degKelv;
    double absoluteZeroC = -273.15, absoluteZeroF = -151.75, absoluteZeroK = 0;
    Scanner input = new Scanner(System.in);
    
    void displayMenu() {
        System.out.println("-= KONWERTER TEMPERATUR =-");
        System.out.println("");
        System.out.println("Wybierz jedną z opcji i naciśnij ENTER:");
        System.out.println("[1] Konwersja ze skali Celsjusza.");
        System.out.println("[2] Konwersja ze skali Fahrenheita.");
        System.out.println("[3] Konwersja ze skali Kelvina.");
        System.out.println("");
        System.out.print("Wybór: ");
    }
    
    void Menu() {
        switch (input.nextInt())
        {
            case 1: //Celsjusz
                Temperature cels = new Temperature();
                cels.Cels();
                break;
            default:
                System.out.println("Niepoprawny wybór.");
        }
    }
    
    void Cels() {
        System.out.print("Wprowadź temperaturę w *C: ");
        inCel = input.nextDouble();
        if (inCel >= absoluteZeroC) {
            degFahr = ((inCel * 1.8) + 32.00);
            degKelv = (inCel + 273.15);
            System.out.println("Temperatura w skali Fahrenheita: " + degFahr + " *F");
            System.out.println("Temperatura w skali Kelvina: " + degKelv + " K");    
        }
        else {
            System.out.println("Błąd krytyczny. Wartość nie może być mniejsza niż zero absolutne!");
        }
    }
}

I teraz pytanie zasadnicze: czy dobrze robię, że w klasie Temperature w metodzie Menu() wydzielam ze switch'a metodę Cels()? Czy nie ma to znaczenia i mógłbym wszystko umieścić w danym case'ie?

2

Metoda konwertująca jednostki ani nie powinna zawierać kodu wyświetlającego dane na ekranie, ani też nie powinna pobierać danych od użytkownika. To tak na pierwszy rzut oka.

2

Ja powiem tylko tyle co wie phpowiec.... W metodach/funkcjach, które coś liczą i zwracają nie dajemy żadnych println. No ale pewnie dopiero zaczynasz "przygodę" z programowaniem. Czy zera absolutne nie powinny być stałymi?
Tak więc najpierw bym odseparowal komunikaty od obliczeń, a dopiero potem zastanawiał się nad tym case'm (ale moim zdaniem lepiej jest tak jak masz niż byś miał ciało funkcji wrzucić do tego case'a)

0

Dzięki za opinie. Czyli jest nad czym potem pracować czyszcząc kod.
To teraz pytanie inne: komunikaty i funkcje wprowadzania wrzucać do oddzielnych klas?

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