Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. В то время как не непосредственно связанный с настольными приложениями, если Вы ищете достойный исходный код для правильно написанных проектов, я задал подобный вопрос:
Люди дали некоторые довольно хорошие предложения там:
Платформы
- Scott Hanselman серия The Weekly Source Code (обычно управлял C#)
- Код, записанный Microsoft Patterns & Методы команда.
- SharpDevelop (записанный в C#)
- Моно (большая часть платформы в C#)
- Краска. Сеть (записанный в C#)
- NHibernate (записанный в C#)
- Проект Замка (записанный в C#)
- xUnit (записанный в C#)
- .Net Исходный код
Проверьте Cabana IdeaBlade для DotNet C #. http://www.ideablade.com/CAB.html
Образец приложения Cabana
Приложение Cabana - это простое справочное приложение для умных клиентов с четким, функциональным богатый пользовательский опыт, который легко развернуть и использовать в Интернете. Кабана демонстрирует:
Простой подход к составному блоку приложений пользовательского интерфейса из паттернов Microsoft & amp; Группа практики. Сопровождаемый, повторно используемый код через композицию пользовательского интерфейса. Отделение модели (бизнес-логика и доступ к данным) от представления. Шаблон Модель-Вид-Презентатор. Настройка производительности. И больше.
Конкретно к организованной платформе представления функций ui мы использовали infonode прикрепляющиеся окна , это - платформа работы с окнами с помощью затмения как появление (перетащите представления куда угодно, закройте их, расстыкуйте их и т.д., со сменными окнами, конечно). существует gpl версия для продуктов с открытым исходным кодом, хотя afaik лицензия разработчика не является настолько дорогим (299$ каждый).
Мы разрабатываем в технологиях.NET здесь.
Наши друзья, здесь работающие над клиентскими приложениями, разрабатывают свое программное обеспечение к Образцовому шаблону разработки Предъявителя Представления, который часто связывается с веб-разработкой. Для них они находят, что это работает очень хорошо, я полагаю, что это может стоить проверить.
Умная Клиентская Фабрика (упомянутый Panos) может также быть полезна для Вас, хотя это не платформа, но больше библиотеки решений для лучшей практики типичных проблем.
Я просто нашел Руководство Составного приложения WPF и Silverlight, который выглядит очень интересным. Это было опубликовано в феврале 2009.
Я рекомендовал бы платформу.NET CSLA Рокфордским Lhotka: http://www.lhotka.net/cslanet/Default.aspx
, Это прибывает, будет полный исходный код, а также демонстрационные клиентские приложения, созданные в ASP.NET, WinForms и WPF.
На стороне Java существует несколько проектов, нацеленных на Платформы Толстого клиента (RCP является новым модным словечком для 'настольных' приложений):
Google любое вышеупомянутое, и Вы получите тонны информации
В Java, Явных Объектах - http://nakedobjects.org/home/index.shtml
JMatter - реализация явных объектов - http://jmatter.org/ . довольно хороший.
они оба - открытый исходный код.
Проверьте Microsoft Умная Фабрика клиентского программного обеспечения . Это содержит примеры кода и документацию.
Обзор
Эта фабрика программного обеспечения обеспечивает, проверенные решения общих проблем нашли при создании и работе составными умными клиентскими приложениями. Это помогает архитекторам, и разработчики создают модульные системы, которые могут быть созданы и развернуты независимыми командами. Приложения, созданные с фабрикой программного обеспечения, используют доказанные методы для операций, таких как централизованный вход исключения.
фабрика программного обеспечения содержит набор допускающих повторное использование компонентов и библиотек, шаблоны решений Visual Studio 2008 года, мастера и расширения, темы с практическими рекомендациями, автоматизировали тесты, обширную документацию архитектуры, шаблоны и ссылочную реализацию. Фабрика программного обеспечения использует Windows Forms, Windows Presentation Foundation, Windows Communication Foundation и Библиотеку Предприятия 3,1 †“выпуск мая 2007. С этим выпуском Составной объект Блок приложений UI включен в фабрику программного обеспечения.
Существует новое .NET архитектурный пакет руководства от шаблонов Microsoft & методы для WPF, который является кодом под названием "Призма" - это - в основном Составной объект "следующего поколения" Блок приложений UI (без SCSF, оснащающего). Это использует Внедрение зависимости, Составной шаблон повсюду, и т.д.
существует довольно хорошее экранная демонстрация DNRTV, демонстрирующая его.
В легкой категории приложений JSR 296 для Java (чтобы быть в будущем Java 7 возможно) является платформой, обрабатывающей основы как управление ресурсами и действия. Много ссылок здесь:
Увеличение масштаба немного, Вы могли посмотреть на различные платформы RCP как:
ОБНОВЛЕНИЕ: Это было упомянуто (Mark Reinhold в Devoxx '08), что JSR 296 будет включен в Java 7.
Дальнейшее обновление: JSR 296 мертв. JavaFX является текущим направлением для клиентского Java.
Можно использовать некоторые из тех же подходов в клиентской разработке, которую Вы используете в веб-разработке, такой как Образцовый Предъявитель Представления. Система. Windows. Пространство имен форм имеет все, что необходимо создать клиентское приложение в C# с остальной частью Платформы.NET, доступной для предоставления услуг, в которых Вы нуждаетесь (такие как IO и дистанционная работа).
До исходного кода для надежных архитектур в настольных приложениях, посмотрите на код для Paint.NET и SharpDevelop. У обоих есть совсем другие подходы, которые будут интересны Вам.
Извините за наклон.NET этого ответа. Это - то, что я знаю лучше всего.:)