Java - Kod do "oceny"

0

Witam!

Chciał bym abyście zerknęli na mój kod ;) Napisany dzisiaj / znaczy wczoraj / zeszło mi się z tym kilka godzin. // Za bardzo nie kombinowałem, chciałem aby wszystko co piszę było dla mnie zrozumiałe.
Ogólnie chciał bym się zapytać czy nie wygląda to bardzo tragicznie / czytelność kodu, ogólnie to projekt spontaniczny.
Z miłą chęcią przyjmę także jakieś rady na przyszłość ;)
Z góry dziękuję!

http://pastie.org/10917065
http://pastie.org/10917070
http://pastie.org/10917072

1

Ogólnie chciał bym się zapytać czy nie wygląda to bardzo tragicznie

Jest źle

public class Employee{
	String Name;
	int Salary;
	ArrayList<String> Skills = new ArrayList<String>();
	
	
	 public Employee(String Employee_name, int salary, ArrayList<String> skills) throws FileNotFoundException, UnsupportedEncodingException {
		Name = Employee_name;
		Salary = salary;
		Skills = skills;
		SaveToFile(Employee_name);
	 }
	 
	private void SaveToFile(String Employee_name) throws FileNotFoundException, UnsupportedEncodingException{
		File file = new File ("C:/Users/Home/Desktop/eclipse/workspace/Test/employees/" + Employee_name);
		PrintWriter writer = new PrintWriter(file, "UTF-8");
		writer.println(Employee_name);
		writer.println(Salary);
		writer.println(String.join(",  ", Skills));
		writer.close();
	}
	
	
	
}
ArrayList<String> Skills = new ArrayList<String>();
  • Dlaczego zwykłe POJO (w założeniu rozumiem) wie GDZIE i JAK zapisać dane do pliku ? wehuwheuqihwieuhqwehqwe ?

W przypadku zapisu powinien być jakiś, EmployeeRespository - interface, i dla niego implementacja która zapiszę do pliku - każda klasa ma mieć ODPOWIEDZIALNOŚĆ.

  • Dlaczego zapisujesz dane w konstruktorze ? to jest złe, wykonywanie potencjalnie długich operacji, nie rób tak.
  • pola powinny być oznaczone jako final
public class main{

	public static void main(String[] args) throws IOException {

		Company c1 = new Company();
		
		// c1.add_Employee(Employee_name, Employee_salary, Employee_skills);
		// c1.view_Employee(Employee_name);
		// c1.view_Employees();
		// c1.add_Employee(Employee_name, Employee_salary, Employee_skills);
		// c1.add_Skill(Employee_name, new_Skill);
		// c1.remove_Employee(Employee_name);
		// c1.edit_Salary(Employee_name, new_Salary);
		// c1.edit_Name(Employee_name, new_Employee_name);
	}
}

super.

public void add_Employee(String Employee_name, int Employee_salary, ArrayList<String> Employee_skills) throws IOException{  
				
		if(!existence_Employee(Employee_name)){
			Employee employee = new  Employee(Employee_name, Employee_salary, Employee_skills);
		}else{
			System.out.println("We have an employee!");
		}
	}
	

a co się stanie, jak inny program, dokładnie zaraz po wykonaniu

if(!existence_Employee(Employee_name)){

a jeszcze przed

Employee employee = new  Employee(Employee_name, Employee_salary, Employee_skills);

stworzy ten plik ?????????????????????????????????

    Path path = Paths.get("C:/Users/Home/Desktop/eclipse/workspace/Test/employees/"+Employee_name);
	    String lineskill = Files.readAllLines(Paths.get("C:/Users/Home/Desktop/eclipse/workspace/Test/employees/"+Employee_name)).get(2);
	    List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);

user image

Wyobraź sobie plik który ma 2GB ? Ja wiem że operacje na streamach są "skomplikowane", ale wszystko do pamięci ?

0

Dziękuje za odpowiedź, na taką liczyłem i dużo wniesie do mojej nauki...

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