Я использую final
все время для атрибутов объектов.
final
ключевое слово имеет семантику видимости, когда используется на атрибутах объектов. В основном устанавливание значения атрибута конечного объекта происходит - прежде чем конструктор возвратится. Это означает, что, пока Вы не позволяете this
, ссылка выходит из конструктора, и Вы используете final
для весь , Вы приписываете, Ваш объект (под семантикой Java 5), гарантировал, что был правильно создан, и так как это также неизменно, это может быть безопасно опубликовано к другим потокам.
Неизменные объекты не примерно потокобезопасность. Они также делают намного легче рассуждать об изменениях состояния в Вашей программе, потому что пространство того, что может изменение, сознательно и, если используется последовательно, полностью ограничено только вещами, которые должны изменение.
я иногда также делаю финал методов, но не как часто. Я seldomly делаю финал классов. Я обычно делаю это, потому что у меня есть мало потребности к. Я обычно не использую наследование очень. Я предпочитаю использовать интерфейсы и объектный состав вместо этого - это также предоставляет себя дизайну, который я нахожу, часто легче протестировать. Когда Вы кодируете к интерфейсам вместо реальных классов, тогда Вы не делаете потребность для использования наследования, когда Вы тестируете, как это, с платформами, такими как jMock, намного легче создать фиктивные объекты с интерфейсами, чем это с реальными классами.
я предполагаю, что должен сделать большинство своего финала классов, но я просто еще не вошел в привычку.
Как насчет определения вашей кодовой страницы в верхней части страницы?
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
Мета-заголовок Content-Type информирует браузер о необходимости обработки содержимого, отправленного как поток текста в кодировке UTF-8. Это не гарантирует, что отправленный поток на самом деле является UTF-8. Чтобы правильно обрабатывать UTF-8, вам нужно сделать 3 вещи: -
Пункт 1 требует либо фактического сохранения файла ASP как файла в кодировке UTF-8, либо того, что все ваше статическое содержимое в файле находится в диапазоне символов ASCII ( 0-127). Обратите внимание, что если вы сохраняете как UTF-8, тогда все ваши серверные скрипты должны использовать символы в диапазоне символов ASCII. В Visual Studio это можно сделать, «Сохраняя файл как ...», а затем щелкнув маленькую стрелку на кнопке «Сохранить».
Пункт 2 требует, чтобы для свойства Response.CodePage
была задана кодовая страница UTF-8 65001, это можно сделать в коде или добавив атрибут CODEPAGE = 65001
в объявления <% @%>
в первой строке файла ASP. Если вы делаете это в коде, вы должны установить его перед любыми вызовами Response.Write
.
И: не используйте функции chr или asc (они ошибаются при использовании 65001), а используйте вместо них chrw и ascw.
Пункт 3 требует, чтобы заголовок Content-Type
содержал charset = квалификатор UTF-8
. Как вы уже делаете, вы можете сделать это с помощью заголовка META. Лично я считаю, что это немного путаница, поэтому я предпочитаю использовать в коде Response.Charset = "UTF-8"
. Это помещает квалификатор в истинный HTTP-заголовок Content-Type
.