Написал я программу, выложил на гитхаб (https://github.com/KaPaHgaIII/namegenerator). Нет ли такого места, где можно показать свой код более опытным людям, чтобы указали на недочёты?
Ответ
1)
cmdArguments.getGender().substring(0, 1).toLowerCase().equals("m") //жуть
cmdArguments.getGender() == Genders.MALE //старые добрые enum
а вот в getGender нужно писать что-то типо этого
switch(gender) {
case "male": return Gender.MALE;
//и т.п.
2)
Random randomizer = new Random(System.nanoTime()); //мелкая придирка, но System.nanoTime() писать не обязательно
3) в
for (int i = 0; i < cmdArguments.getCount(); i++) {
System.out.println(engine.generateName(cmdArguments.getLength()));
}
System.out.println лучше выносить в отдельный метод, причём лучше в отдельный класс (правило mvc)
4)
catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
меняем на
catch (Exception e) {
System.err.println(e); //обратите внимание на err
}
5)
readData("male_names.txt");
здесь тоже бы хорошо было бы заюзать enum. А вдруг в будущем вы будете считывать данные не с файла, а с интернета? Будете url каждый раз указывать?
6) огромное количество
s.substring(i, i + 2);
А почему +2, а не +3? Не помешал бы мелкий комментарий рядом
7) Отдельное текстовое пояснение как работает алгоритм. Иначе он будет понятен только вам
0) Но главное, после моих рекомендаций не превратиться в Бориса из известной статьи Как два программиста хлеб пекли
Комментариев нет:
Отправить комментарий