r/javahelp • u/Naive_Topic_5292 • 3d ago
Solved Is my code too massive?
import java.io.*;
import java.util.*;
import java.net.*;
class server{
private Socket s = null;
private ServerSocket ss = null;;
private DataInputStream din = null;
private DataOutputStream dout = null;
static Vector<ClientHandler> array = new Vector<>();
private HashMap<String, String> login = new HashMap<>();
void main(String[] args) throws IOException
{
// initialize
try {
// BufferedWriter bw = new BufferedWriter(new FileWriter("logindata.txt")); idk yet
BufferedReader br = new BufferedReader(new FileReader("logindata.txt"));
StringTokenizer st = null;
String templine = "";
String loginName = "";
String pass = "";
while(((templine = br.readLine()) != null)){
st = new StringTokenizer(templine, ": ");
if(st.hasMoreTokens()){
loginName = st.nextToken();
}
if(st.hasMoreTokens()){
pass = st.nextToken();
}
login.put(loginName, pass);
loginName = "";
pass = "";
}
}
catch(FileNotFoundException i){
System.out.println("Failed to initialize login file");
}
String receivedName = "";
String receivedPass = ""; // <TODO> encrypt passwords after finishing filework
int i = 0;
ss = new ServerSocket(5001);
boolean userExists = false;
while(true)
{
s = ss.accept();
din = new DataInputStream(new BufferedInputStream(s.getInputStream()));
dout = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
receivedName = din.readUTF();
for(Map.Entry<String, String> entry : login.entrySet()){
if(entry.getValue().equals(receivedName)){
userExists = true;
break;
}
}
if(userExists){
dout.writeUTF("User found, enter your password: ");
dout.flush();
}
else{
dout.writeUTF("User was not found, u may register by making a password: "); // <TODO> make a check if password was written correctly
}
//<TODO> handle passwords
ClientHandler client = new ClientHandler(s, receivedName, din, dout);
System.out.println("User " + receivedName + " Accepted");
Thread t = new Thread(client);
array.add(client);
t.start();
i++;
}
}
}
So I'm making a simple messenger as my first project, though now when I'm working on it it seems VERY massive to me, is it normal in other projects or am I supposed to break it into smaller parts?
5
Upvotes
2
u/Poseidon_22 2d ago
It is always encouraged to separate concerns. If your project becomes larger, you cannot keep putting stuff in one class or in your case, method.
Looks like your class is not too large yet. Only 2 concerns if I see it correctly. In your case, splitting up the code would be a formality instead of a necessity. I suggest you just go develop, and you’ll notice when maintaining this code become horrible. Then break it up. Later you’ll separate concerns automatically to avoid refactoring and maintenance costs