#java #инспекция_кода
public class MainTest {
PracticeWork1 grades;
MainTest() {
grades = new PracticeWork1();
init();
}
public static void main(String[] args) {
new MainTest();
}
public void init() {
testOut();
grades.adder();
testOut();
grades.adder(98);
testOut();
}
}
пример 2
public class MyWin extends JFrame {
private static final long serialVersionUID = 1L;
public MyWin() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
Panel child= new Panel();
c.add(child);
setTitle("Example window");
setPreferredSize(new Dimension(640, 480));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); // отображаем окно
}
public static void main(String args[]) {
new MyWin();
}
}
Правильно ли в методе main создавать обьект того класса в котором этот мейн находиться
, а не прописывать большинство логики в нём ?
Ответы
Ответ 1
Если я правильно понял ваш вопрос, он о том, можно ли помещать логику класса в конструктор. Технически это возможно и будет работать, но с точки зрения смысла кода это не очень хорошо. Конструктор должен конструировать класс, а действие должно запускаться каким-либо методом. Если ваш проект маленький, вы можете нарушить это правило (как и многие другие), но для более-менее серьёзного проекта я бы посоветовал оставлять в конструкторе лишь инициализацию.Ответ 2
Логика в конструкторе - не очень хорошая идея. Такой код тяжело тестировать. Так же в случае возникновения исключения в конструкторе могут быть проблемы. Я бы рекомендовал инициализацию проводить не в конструкторе: public class MainTest { PracticeWork1 grades; MainTest() { } public static void main(String[] args) { MainTest test = new MainTest(); test.init(); } public void init() { grades = new PracticeWork1(); testOut(); grades.adder(); testOut(); grades.adder(98); testOut(); } } Для этого хорошо подошёл бы шаблон Builder.
Комментариев нет:
Отправить комментарий