четверг, 22 июля 2010 г.

Почему Microsoft в примерах кода использует ZeroMemory вместо { 0 }?

Это перевод Why do Microsoft code samples tend to use ZeroMemory instead of { 0 }? Автор: Реймонд Чен.

Если вы когда-либо читали MSDN, то вы могли заметить, что примеры кода в MSDN используют явный вызов функции ZeroMemory, вместо объявления переменной как занулённой, используя синтаксис "= { 0 }". Почему?

Чтобы сделать примеры кода очевиднее для людей, использующих другие языки программирования.

Нравится вам это или нет, но значительный процент людей, которые пишут программы под Windows, делают это в языках, отличных от C и C++. Хотя эти разработчики могут иметь базовые познания в C и C++, они не помнят всех тонкостей этих языков.

Сравните это с ситуацией, когда вы говорите на английском в компании людей, где не все могут свободно говорить на нём. Если вы внимательны к вашей аудитории, то вы будете избегать более эзотерических грамматических конструкций, редких слов и неясных идиом. Вместо "Were it to rain, we will see that umbrellas be available" вы бы использовали более простое "If it rains, then we will make sure that umbrellas are available", избегая, таким образом, грамматической сложности подразумеваемой условной инверсии ("if"), сослагательного наклонения условия ("were"), подразумеваемого вывода ("then"), а также связывания намерения ("be").

Чёрт, да даже люди, которые говорят, что знают C и C++, могут не знать всех тонкостей языка. Некоторые из них могут иметь неверное представление о том, что делает " = { 0 }". И кто среди нас действительно помнит странные правила приоритетов операторов C/C++?

Соответственно, примеры в MSDN предпочитают использовать ZeroMemory, чтобы сделать факт обнуления переменных очевидным для всех. Одной вещью, которую мы узнали за все эти годы, было то, что многие люди просто копируют код, даже не понимая, что он делает. И если такие небольшие вещи, типа явного вызова ZeroMemory, могут сделать назначение кода чуть более ясным и уменьшить ошибки перевода на другие языки - то это хорошая вещь.

Если вы лично предпочитаете " = { 0 }" - ради бога, используйте. Значит, вы уверены в том, что тысячи программистов не будут читать ваш код и пробовать переводить его на Visual Basic, потому что это единственный язык, которым они владеют. Но у MSDN нет такой роскоши.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.