Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2017, 12:26   #1
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию Можно ли улучшить этот код?

Доброго времени суток.
Собственно сабж) если кому ни будь не будет лень это запускать)
https://github.com/TinoAjato/WFWS2
К сожалению в сообщение 6 классов не поместились.
Всего несколько вопросов, можно ли улучшить этот код и как?
Artsiom вне форума Ответить с цитированием
Старый 26.07.2017, 13:28   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да конечно можно.

Не особо разбирался что он делает, но например из общего
  1. Придерживаться более-менее общепринятых соглашений по стилю кода: 4 пробела вместо таба (ну в IDE настроить), пробел перед () в if/циклах, без пустой строки в начале блока, ... http://www.oracle.com/technetwork/ja...oc-136057.html
  2. Комментариев чот много, скорее всего либо много очевидных типа int x = 42; // присвоили х, либо надо стараться писать код так, чтоб было понятно без комментариев (имена, функции, ...).
    https://www.youtube.com/watch?v=EEq1wdM2M2w
  3. "создаём класс" кстати некорректная фраза в том контексте. Там экземпляр класса (объект) создается.
  4. Не надо хранить бинарники в гит репозитории.

А, ну и еще выкинуть Java и взять Kotlin
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.07.2017, 13:48   #3
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Ага, спасибо.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Да конечно можно
1. Значит с точки зрения проектирования всё сделано правильно?
2. Так много комментариев это же хорошо. Ну, если не покусан белками-истеричками. А по поводу писать понятно - сложно выдумывать названия переменных, особенно если их много.

А если почти одинаковых классов дофига, то всё же лучше использовать 1 абстрактный с реализацией половины общих методов, а другую половину реализовать в каждом конкретном?
Или так можно не всегда(по хорошему)?

Последний раз редактировалось Artsiom; 26.07.2017 в 14:10.
Artsiom вне форума Ответить с цитированием
Старый 26.07.2017, 14:51   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Значит с точки зрения проектирования всё сделано правильно?
я ж говорил, что не смотрел особо это, даже не в курсе какая задача решалась.

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Так много комментариев это же хорошо.
Плохо, они могут не соответствовать действительности, их надо обновлять (и компилятор не заставит) и т.п., удобнее просто сразу читать понятный код.
Ну если речь конечно не о документации публичного API или действительно не очевидных вещах (оптимизации и т.п.)
Цитата:
Сообщение от Artsiom Посмотреть сообщение
А если почти одинаковых классов дофига, то всё же лучше использовать 1 абстрактный
Зависит от ситуации, может "дофига классов" вообще не нужны.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.07.2017, 16:09   #5
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
я ж говорил, что не смотрел особо это, даже не в курсе какая задача решалась.
Да это не важно.
Есть родительское окно на нем располагаются дочерние. Дочерние(сейчас работаю над справочниками - 15 штук, вот тут и добавил абстрактный класс) все как под копирку(почти). Различие только в наполнении компонентами(поле ввода, комбобокс, радикнопка) модальных окон этих справочников.
А на гите только вырезанная часть из основной проги.

Кажется я таки смог понять, зачем нужен абстрактный класс.
Код:
public abstract class DirectoryFrame extends JInternalFrame implements Parent {
	
	private static final long serialVersionUID = 1L;
	
	/**Панель со скроллом и таблицей*/
	private TablePanel tblPanel;
	
	/**Создать строку в таблице*/
	private JButton btCreate;
	
	/**Удалить строку в таблице*/
	private JButton btDelete;
	
	
	/**Абстрактный справочник
	 * @param name - название справочника
	 * @param x - координата на экране в родительской форме
	 * @param y - координата на экране в родительской форме
	 * @param width - ширина фрейма
	 * @param height - высота фрейма
	 */
	public DirectoryFrame(String name, int x, int y, int width, int height) {
		super(name,
				true,
				true,
				false,
				false);
		
		System.out.println("Справочник - " + name);
		
		setBounds(x, y, width, height);
		
		createGUI();
		
		loadDataInGUI();
		
		setListeners();
	}
	
	/**Создаём таблицу, управляющие элементы и располагаем на форме*/
	private void createGUI() {
		
		tblPanel = new TablePanel(this);
		
		btCreate = new JButton("Создать");
		btDelete = new JButton("Удалить");
		
		Container container = this.getContentPane();
		container.removeAll();
		container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
		
		btCreate.setAlignmentX(Component.CENTER_ALIGNMENT);
		btDelete.setAlignmentX(Component.CENTER_ALIGNMENT);
		
		container.add(Box.createVerticalStrut(0));
		container.add(tblPanel.getPanel());
		container.add(Box.createVerticalStrut(10));
		container.add(btCreate);
		container.add(Box.createVerticalStrut(5));
		container.add(btDelete);
		container.add(Box.createVerticalStrut(5));
		
		this.setContentPane(container);
		
		setStaticSize(btCreate, 130, 25);
		setStaticSize(btDelete, 130, 20);
	}
	
	/**Устанавливаем Max/Min и предпочтитеьный размер одинаковым*/
	private void setStaticSize(Component component, int width, int height){
		
		component.setMinimumSize(new Dimension(width, height));
		component.setMaximumSize(new Dimension(width, height));
		component.setPreferredSize(new Dimension(width, height));
	}
	
	/***/
	public TablePanel getTblPanel() {
		return tblPanel;
	}
	
	/***/
	public JButton getBtCreate() {
		return btCreate;
	}
	
	/***/
	public JButton getBtDelete() {
		return btDelete;
	}
	
	@Override
	public void parentProcess() {
		
		int index = tblPanel.getIndexSelectRow();
		
		if(index != -1){
			dblClickInTable(index);
		}
	}
	
	/**Заполняем таблицу данными и настраиваем её*/
	protected abstract void loadDataInGUI();
	
	/**Устанавливаем слушатели событий*/
	protected abstract void setListeners();
	
	/**Обработка двойного клика по таблице
	 * @param index - реальный индекс в таблице
	 */
	protected abstract void dblClickInTable(int index);
}

Последний раз редактировалось Artsiom; 26.07.2017 в 16:15.
Artsiom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли перевести этот код с С++ на Pascal? lixod96 Паскаль, Turbo Pascal, PascalABC.NET 0 28.04.2014 16:15
На каком языке этот код и можно ли его переделать? thedoctor Общие вопросы C/C++ 8 11.01.2014 14:18
Как можно улучшить код для синтаксической подсветки? (Delphi 7)) munthrekosh Общие вопросы Delphi 5 24.03.2012 08:29
Как можно улучшить код @ndreiKO Помощь студентам 5 23.08.2011 04:21
Как можно улучшить эффективность и качество ПП? Evgenii Помощь студентам 5 29.01.2009 16:22