Вызов Application.launch(...)
вызывает создание экземпляра вашего подкласса Application
, запускаемого инструментария приложения FX, и start()
для вызова в созданном экземпляре.
Этот экземпляр Application
создается путем вызова конструктора без аргументов, поэтому ваш подкласс Application, Account, должен определить один:
public Account() {
this("");
}
Ваш класс Account
фактически делая две совершенно разные вещи: он действует как экземпляр Application
, а также выступает в качестве модели данных для учетной записи (инкапсуляция имени и баланса). Вероятно, вы должны разделить это на два класса, каждый из которых несет свою ответственность:
import javafx.beans.property.*;
public class Account {
private StringProperty name = new SimpleStringProperty();
private DoubleProperty balance = new SimpleDoubleProperty();
public Account(String name) {
this.name.set(name);
this.balance.set(0.0);
}
public void deposit(double amount) {
setBalance(getBalance() + amount);
}
public void withdraw(double amount) {
setBalance(getBalance() - amount);
}
public final double getBalance() {
return balance.get();
}
private final void setBalance(double value) {
this.balance.set(value);
}
public ReadOnlyDoubleProperty balanceProperty() {
return balance;
}
public final String getName() {
return name.get();
}
public final void setName(String name) {
this.name.set(name);
}
public StringProperty nameProperty() {
return name;
}
}
, а затем
import javafx.application.*;
import javafx.fxml.*;
import javafx.stage.*;
import javafx.scene.*;
public class AccountApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
// TODO Auto-generated method stub
FXMLLoader loader = new FXMLLoader(getClass().getResource("account.fxml"));
Parent root = loader.load();
stage.setTitle("Account");
stage.setScene(new Scene(root));
stage.sizeToScene();
stage.show();
}
}
Не уезжайте все "скучные" биты в конец - удостоверяются, что каждый компонент работает, с регрессионными тестами и документацией, как можно раньше в проекте.
Тем не менее последние несколько недель все еще собираются включить упорно искание действительно неуловимых ошибок, контакт с изменениями требований в последнюю секунду, завершение документации и обычно вытаскивание из-за двери проклятой вещи. Мой подход должен только высосать его: подавите голову и знайте что, чем раньше она сделана, тем раньше можно запустить на всем более низком приоритете, более интересные вещи, которые были поставлены в очередь позади текущего выпуска.
Вы не можете полностью избежать, чтобы изменения требований/документов на последней минуте кроме путем принятия мер к клиентам ко всем были в отпуске непосредственно перед выпуском. Или вовлеките себя в доминирующем положении как Apple и Google, так, чтобы у клиентов не было предварительных знаний выпусков.
"Необходимо" преследовать неуловимые ошибки (которым я означаю тех настолько трудно воспроизводить, что у Вас нет последовательного тестового сценария), рано, потому что Вы не можете оценить, сколько времени они возьмут для фиксации. Но на практике некоторая пропорция их станет менее неуловимой, в то время как проект продолжается, или окажитесь побочными эффектами другой известной проблемы, таким образом, Вы экономите время в среднем путем давания им ограниченного шанса сделать так. Оборотная сторона этого - то, что к концу будут некоторые оставленные. Если существуют больше, чем приблизительно два, тем не менее, Вы сделали это неправильно.
Делая короткий "перерыв" после главного крайнего срока, чтобы сделать независимо от того, что Вы находите, большая часть забавы является хорошим способом избежать перегорания в конечном счете. Даже если Вы заканчиваете тем, что выбросили большую часть из него, потому что Вы пропустили некоторое трудное планирование, Вы сделаете себя более продуктивными.
Используйте разработку через тестирование. Провальный тест всегда является сильной мотивацией.
Выпустите некоторые тестеры на нем. Ничто больше не мотивирует, чем наблюдение, что люди используют Ваши интересные биты и нахождение очевидных улучшений.
Повторитесь мне: Мой код не существует, пока в нем не регистрируются.
Или если Вы не используете управление версиями, 'пока оно не публикуется' или, 'пока оно не запускается'.
Вы могли также использовать страх и сказать, что, если ВЫ не заканчиваете и запускаете его, кто-то еще будет.
Не делайте всех интересных частей сначала.
Я заставляю меня делать скучный код, всегда оставляя достойный бит до последнего и будучи строгим о завершении скучного раздела сначала.
Обычно я пытаюсь сказать мне, что получение вещей работать в реальном мире так же интересно, потому что существует то, где Ваш код получит кредиты или будет улучшен обнаруженными ошибками и запросами новых функций.
"если ВЫ не закончите и запустите его, то кто-то еще будет".
Сказанный меня, что один прежде. Иногда однако его польза, чтобы сделать перерыв в течение пары часов затем возвращается к нему. Затем Вы столь не истощены на нем, как Вы были.
Я пытаюсь продвинуть понятие дней ошибки / вечера. Поставьте цель ошибок/проблем для обращения и когда Вы поражаете то число, все добираются для выхода для (оплаченный!) пицца/пиво. Продолжает моральный дух команды и действует как фокус в в других отношениях скучный период.
Также можно добавить в это понятие prizes/cudos для лучшей части рефакторинга или повышения производительности и т.д.
Я соглашаюсь, что это жестко. Единственная вещь, которая сохраняет меня движением, состоит в том, чтобы иметь в виду чувство, что я имел бы после наблюдения, что это завершается / поставленный / в руках клиентов.
Моя мотивация должна была только Сделать Его. Как сказанный onebyone, просто необходимо сидеть на корточках и сделать это. Это - весь вопрос приоритетов. Чем более быстры приоритеты вне пути, тем раньше можно возвратиться к интересному материалу.
В целом при выполнении 90% работы она почти заканчивается, просто необходимо сделать последние 90% :-)
Всегда думайте об этом, и Вы будете видеть, что это - длинный путь, пока он не работает.
Я - счастливое выполнение творческих забавных битов программирования.
Но после этого я думаю о создании счастливого пользователя.