#169 Код-ревью сервиса расчета ИМТ

Компании:
Digital League
Темы:
JavaJDBCКод ревью

Сделать код-ревью:

SQL
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class PersonService {


    /**
     * Возвращает средний индекс массы тела всех лиц мужского пола старше 18 лет
     *
     * @return
     */
    public void getAdultMaleUsersAverageBMI() {
        double totalImt = 0.0;
        long countOfPerson = 0;
        double heightInMeters = 0d;
        double imt = 0d;
        List<Person> adultPersons = new ArrayList<>();
        try {
            Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:test", "admin", "qwerty$4");
            Statement s = c.createStatement();
            ResultSet rs = s.executeQuery("SELECT * FROM person WHERE sex = 'male' AND age > 18");
            while (rs.next()) {
                Person p = new Person();
                //Retrieve by column name
                p.setId(rs.getLong("id"));
                p.setSex(rs.getString("sex"));
                p.setName(rs.getString("name"));
                p.setAge(rs.getLong("age"));
                p.setWeight(rs.getLong("weight"));
                p.setHeight(rs.getLong("height"));
                adultPersons.add(p);
            }

            for (Person p : adultPersons) {
                heightInMeters = p.getHeight() / 100d;
                imt = p.getWeight() / (Double) (heightInMeters * heightInMeters);
                totalImt += imt;
            }
            countOfPerson = adultPersons.size();

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Average imt - " + totalImt / countOfPerson);
    }
}

class Person {
    private Long id;
    private String sex;
    private String name;
    private Long age;
    private Long weight;
    private Long height;
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти