Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Подготовьте его теперь перед записью всех строк в самой кодовой базе.
Все после теперь будет слишком поздно. Это теперь или никогда!
Это верно, что это - немного дополнительного усилия подготовиться хорошо теперь, но не выполнение его закончит тем, что было намного более дорогим.
, Если Вы не будете следовать всем инструкциям в ссылках ниже, по крайней мере, учтите точки 1,2 и 7 из сводки, которые являются очень дешевыми, чтобы сделать теперь и которые причиняют большую часть боли впоследствии, по моему опыту.
Проверка эти инструкции и лично убеждаются, почему лучше запуститься теперь и получить все подготовленное.
Мало извлечения:
По моему скромному мнению, для требования что-то идет в, происходит "за несколько лет", буквально переводит в, "мы надеемся однажды", который действительно "никогда" означает. Хотя я все еще скользил бы по различным учебным руководствам, чтобы удостовериться, что Вы не делаете ужасающих ошибок. Выполнение корректной поддержки интернационализации теперь будет означать меньше работы в будущем, и как только Вы получаете использование к нему, это не будет иметь никакого реального влияния на сегодняшней производительности. Но если можно измерить цель в годах, возможно, это не стоит делать в в порядке теперь.
я работал над двумя проектами, которые сделали интернационализацию: ASP.NET C# (существовал, прежде чем я присоединился к проекту), приложение и приложение PHP (homebrewed мой собственный метод с помощью бесплатного управления Интернационализацией и моего собственного приложения управления).
необходимо сохранить весь текст (маркировки, текст кнопки, и т.д. и т.д.) как данные в базе данных. Сошлитесь на них с ключами (я предпочитаю использовать первые 4 слова, сделал верхний регистр, пробелы преобразованный в подчеркивания и не буквенно-цифровой индикатор разделенный), и когда Вы имеете дубликат, добавляете число до конца. Преимущество этого ключевого метода является программистом, имеет довольно глубокое понимание содержания текста только путем рассмотрения ключа.
Запись утилита для извлечения данных и файлов ресурсов.NET сборки, которые Вы добавляете в свой проект для компиляции. Создайте отдельный файл ресурсов для каждого языка. В Вашем коде используйте ключ для указания на надлежащую запись.
я скользил бы по документам MS о предмете: http://www.microsoft.com/globaldev/getwr/dotneti18n.mspx
Некоторые основные вещи избежать:
Я буду добавлять к хранилищу и управлять строковыми данными как Unicode (NVARCHAR в SQL MS).
Интернационализация позволит Вашему продукту быть применимым в других странах, это легко и должно быть сделано от запуска (этот способ, которым англоязычные люди во всем мире могут использовать Ваше программное обеспечение), те 3 правила получат Вас большая часть пути там:
Локализация переводит программное обеспечение на различные языки, это трудно и дорого, хорошее начало никогда не должно трудно кодировать строки и никогда не создавать предложения из меньших строк.
При использовании данных тестирования используйте неанглийский язык (например: русский, польский, норвежский язык и т.д.) строки. Кодирование посмотрело, это - небольшая ужасная голова в каждом углу. Если не в Ваших собственных библиотеках, то во внешних.
я лично одобряю русский язык, потому что, хотя я не говорю русского слова (несмотря на источник моего имени) он имеет внешние символы в нем, и он берет путь больше пространства тогда английский язык и для этого тестирует Ваш интервал также.
не знают, является ли это чем-то конкретный язык, или просто потому что нашему российскому переводчику нравятся подробные строки.
Помимо использования памяти / дискового пространства, еще одним важным преимуществом использования разделяемых библиотек является то, что обновления библиотеки будут автоматически собираться всеми программами в системе, которые используют библиотеку.
Когда в библиотеках InfoZIP ZIP была уязвимость безопасности, обновление DLL /. поэтому автоматически сделало безопасным все программное обеспечение, которое их использовало. Программное обеспечение, которое было связано статически, пришлось перекомпилировать.
Является ли автоматическое системное тестирование пользовательского интерфейса лучшим вложением средств?Единственное, что я всегда буду делать, это: «Не используйте составные строки, которые создаются во время выполнения из составных фраз» и если вы сделайте это, не распространяйте код, который создает одну строку, на множество методов.
Автоматическое изменение размера (и макета) вашего пользовательского интерфейса в соответствии с длиной меток и т. д. сэкономит вам много времени в течение многих лет, если можно сделать это дешево. Существует множество сторонних наборов элементов управления для Windows Forms, которые позволяют маркировать текстовые поля и т. Д. Без необходимости размещать метки в качестве отдельных элементов управления.
Я только начинаю интернационализировать приложение WinForms, мы надеемся, что в основном сможем использовать «Имя» каждого элемента управления в качестве ключа поиска, без необходимости перемещать участки в файлы ресурсов и т. Д. Это не всегда так сложно, как вы думаете сначала….