#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.
Комментариев нет:
Отправить комментарий