Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Инспекция генератора имён

#java #инспекция_кода


Написал я программу, выложил на гитхаб (https://github.com/KaPaHgaIII/namegenerator).
Нет ли такого места, где можно показать свой код более опытным людям, чтобы указали
на недочёты?
    


Ответы

Ответ 1



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) Но главное, после моих рекомендаций не превратиться в Бориса из известной статьи Как два программиста хлеб пекли

Ответ 2



Ох, не люблю всех этих телепаций уровня "введите то, введите сё, введите хрень ту экзит". Чем стандартная командная строка не угодила-то? -g, --gender= m[ale], f[emale], b[oth] -l, --length= name length -n, --number= number of names to generate Понятно и без лишних телодвижений. Тем более что стандартный GNU getopt() для Java существует давно.

Комментариев нет:

Отправить комментарий