Code analysieren - Vorschlag zur verbesserung
-
Hallo.
Ich habe eine kleine Klasse geschrieben um Zahlen auf Primzahlen zu testen.
Sinn war es aber den code zu verbessern, das er den Prinzipien Objektorientierten Designs entspricht.
Ich bitte euch schaut euch den code mal an und gebt mir bitte ein feedback. ich bin für jeden hinweis dankbar.
Vielen Dank schon mal im vorrauspackage math; import java.util.Arrays; public class PrimeNumbersTest { private boolean[] primeNumbersList = null; /** * checks if the number is a prime number * @param number - the number to test * @return true if the number is a prime number */ public boolean isPrimeNumber(int number){ startPrimeNumbersTest(number); return getPrimeNumberStatus(number); } /** * starts the prime test * @param maxPrimeNumber - the number to test */ private void startPrimeNumbersTest(int maxPrimeNumber){ // init the prime numbers list initPrimeNumbersList(maxPrimeNumber); // 1 is not a prime number setPrimeNumberStatus(1, false); // start the test with 2 for (int checkNumber = 2; checkNumber <= maxPrimeNumber; checkNumber++){ if (getPrimeNumberStatus(checkNumber) == true){ for (int multiple = (checkNumber * checkNumber); multiple <= maxPrimeNumber; multiple += checkNumber){ setPrimeNumberStatus(multiple, false); } } } } /** * create a new list * @param maxPrimeNumber */ private void initPrimeNumbersList(int maxPrimeNumber){ // check if the list is empty if (primeNumbersList == null){ this.primeNumbersList = new boolean[ maxPrimeNumber ]; } if (maxPrimeNumber > this.primeNumbersList.length){ this.primeNumbersList = new boolean[ maxPrimeNumber ]; } // init the list with default values ( true ) Arrays.fill(primeNumbersList, true); } /** * set the status of a number in the list * @param primeNumber * @param isPrimeNumber */ private void setPrimeNumberStatus(int primeNumber, boolean isPrimeNumber){ System.out.println("setPrimeNumberStatus " + primeNumber + isPrimeNumber); this.primeNumbersList[ primeNumber - 1 ] = isPrimeNumber; } /** * get the status of a number in the list * @param primeNumber * @return */ private boolean getPrimeNumberStatus(int primeNumber){ return this.primeNumbersList[ primeNumber - 1 ]; } }
-
Das ist völlig uninteressant aus OOP Sicht. Ich würd nicht mal einen halben Gedanken dran verschwenden
-
Ja da hast du sicher recht. Aber ich will sehr guten COde schreiben und da habe ich mir dieses kleine Projekt ausgesucht um zu probieren.
und meine frage ist halt was kann man verbessern
-
Ich finds auf den ersten Blick in Ordnung. Du wirst es nicht schaffen, sehr guten Code zu schreiben. Das macht auch keinen Sinn, du hast normal ganz andere Anforderungen in echten Projekten. Wichtig ist, dass die Gesamtarchitektur sauber ist, und dass der Code insgesamt wartbar und nachvollziehbar ist. Ob so ein kleines Schnippsel gut oder sehr gut ist, spielt keine Rolle. Das hat jetzt auch nichts mit OOP zu tun, das hättest glaub ich auch als statische Methode anbieten können. Stell dir mal ein komplexeres System vor, dass aus hunderten von Klassen besteht. Da kannst du über OOP und Architektur nachdenken. Alles andere bringt nichts.