Jakośc kodu

0

Mam takie pytanie a raczej prośbę o wytykanie mi błędów w kodzie :D
Uczę się trochę Javy i chciałbym opinii osób które są lepsze "w te klocki" ode mnie.

Kod pisany dla rozwiązania zadania ze spoju:
http://pl.spoj.com/problems/PRIME_T/

program został przyjęty;

Pisałem go starając się używać w miarę obiektowo (przynajmniej mi się tak wydaje:D).
Chciałbym przyłożyć wagę do jakości kodu.
Liczę że ktoś powytyka mi błędy, że powinny być osobne klasy, itp.


package liczby;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class liczby
{

	public static void main(String [] args) throws NumberFormatException, IOException
	{
	    Liczbya liczby= new Liczbya();
	    liczby.setLiczba_testow();
	    liczby.ustaw_tablice_testow();
	    liczby.pobieraj_testy();
	    liczby.wypisz_wyjscie(); 
	}
	
}

// klasa obsługi programu 
class Liczbya 
{

	private BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	private PrintWriter print=new PrintWriter(new OutputStreamWriter(System.out), true);
	
	private int liczba_testow;
	private int[] tablica_testow; 

	//pobieranie ilosci testow do sprawdzenia
	public void setLiczba_testow() throws NumberFormatException, IOException
	{
		 do
	        {
			 liczba_testow=Integer.parseInt(br.readLine());        	
	        }while(liczba_testow>=100000);
	}
	
	// definicja tablicy testow
	public void ustaw_tablice_testow()
	{
		tablica_testow=new int[liczba_testow];
	}
	
	//wprowadzanie testow do tablicy
	public void pobieraj_testy() throws NumberFormatException, IOException
	{
		for(int i=0;i<tablica_testow.length;i++)
		{
			int x=0;
			do
			{
			   x=Integer.parseInt(br.readLine());   
			}while(x<0&&x>100000);
		
			tablica_testow[i]=x;        	
		}
	}
	
	//wykonywanie testow
    private boolean liczba_pierwsza(int liczba)
	{		
			int pier=(int) Math.sqrt((double)liczba);
			if(liczba==1)return(false);
			for(int i=2;i<=pier;i++)
			{
				if (liczba%i==0)
				{
					return(false);
				}
			}
			return(true);			
	}
    //wypisywanie wynikow testow 
    public void wypisz_wyjscie()
    {
        for(int e:tablica_testow)
	    {
		   if(liczba_pierwsza(e))
		   {
	   		      print.println("TAK");
		   }
		   else
		   {
	   		      print.println("NIE");
		   }
		}
	  
    }
    
}
0

Mi się ten kod nie podoba z dwóch powodów:

  • brak obsługi wyjątków: throws NumberFormatException, IOException,
  • komentowanie rzeczy oczywistych:
    //wypisywanie wynikow testow 
    public void wypisz_wyjscie()

.
Poza tym nie przestrzegasz zalecanych reguł nazewniczych (wielkość liter, '_' w nazwach).
Pole print można zdefiniować prościej:

PrintStream print = System.out;

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