Как Windows определяет приложения не-Unicode?

Я справедливо удивлен тем, насколько единодушный чувство - то, что getters и методы set прекрасны и хороши. Я предлагаю провокационную статью Allen Holub" , Методы get И Методы set Злые ". Предоставленный, заголовок для значения шока, но автор делает справедливые замечания.

По существу, если Вы имеете getters и setters для каждого частного поля, Вы делаете те поля столь же хорошими как общественность. Вам очень было бы трудно изменять тип частного поля без волновых эффектов к каждому классу, который называет это getter.

, Кроме того, от строго точки зрения OO, объекты должны отвечать на сообщения (методы), которые соответствуют их (надо надеяться), единственной ответственности. Подавляющее большинство getters и setters не имеет смысла для их составляющих объектов; Pen.dispenseInkOnto(Surface) имеет больше смысла мне, чем Pen.getColor().

Методы get и методы set также поощряют пользователей класса просить у объекта некоторые данные, выполнять вычисление, и затем устанавливать некоторое другое значение в объекте, более известном как процедурное программирование. Вы были бы лучше обслужены, чтобы просто сказать объекту сделать то, во что Вы шли во-первых; также известный как Эксперт по информации идиома.

Методы get и методы set, однако, являются необходимым злом на границе слоев - UI, персистентность, и т.д. Ограниченный доступ к внутренностям класса, таким как друг C++ ключевое слово, защищенный доступ пакета Java, внутренний доступ.NET, и Друг, которому Шаблон Класса может помочь Вам уменьшить видимость getters и методы set только те, кому нужны они.

5
задан Mark Gilbert 29 October 2009 в 03:45
поделиться

2 ответа

Windows распознает разницу между программами Unicode и не-Unicode по функциям, которые они вызывают. Большинство функций Windows API будут представлены в двух вариантах: один оканчивается на A для не-Unicode и один на W для Unicode. Включаемые файлы, которые определяют эти функции, будут использовать настройки компилятора для автоматического выбора того или другого за вас.

Возможно, символы не выводятся должным образом, потому что вы выбрали шрифт, который не включает их, по умолчанию Шрифт пользовательского интерфейса.

7
ответ дан 14 December 2019 в 08:54
поделиться

Откуда вы берете струны? Если они жестко запрограммированы в ваших исходных кодах C, то к моменту вызова AddString они (скорее всего) уже повреждены.

Ничто не мешает взять некоторую строку Unicode, «сжать» ее в std :: string, например, и повредить его. Даже если приложения скомпилированы как Unicode.

0
ответ дан 14 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: