вторник, 19 октября 2010 г.

Стеклянные дома великолепно подходят для забрасывания их камнями

Это перевод Glass houses are great places to throw stones. Автор: Реймонд Чен.

Всякий раз, когда я пишу статью, объясняя, что программы должны избегать делать X, я могу с уверенностью полагаться на появление комментариев, которые говорят: "Ну, продукт Microsoft Q делает это!", как бы говоря: "Попался, лицемер!" (перевод постов: первый, второй, третий).

Но они говорят "попался" не тому человеку. Потому что, и я уверен, что это будет шоком для многих людей, читающих это, я не писал лично каждую строку кода в каждой когда-либо выпущенной программе Microsoft (а даже если бы я писал что-то такое - я написал это, когда был новичком и не знал про это правило. Потому что, и я уверен, что и это будет шоком для многих людей, читающих это, я тоже когда-то был новичком).

Если вы нашли программу Microsoft, которая нарушает правила - то идите и пожалуйтесь на неё команде разработчиков этой программы. Жалуясь мне вы ничего не добьётесь. У меня нет доступа к их исходному коду, а даже если бы он был, у меня нет разрешений на внесение изменений в их код, нет у меня и времени на изучение того, как работает их программа, и куда и что мне нужно вписывать, чтобы сделать изменение. Более того, я не знаю, можете ли выдержать все эти шокирующие открытия в одном посте, но - команды других продуктов не присылают мне на рецензию каждую строчку их кода.

В самом деле, одна из причин, почему я пишу здесь обо всех этих вещах, которые программы не должны делать - потому что я сам лично видел продукт Microsoft, нарушающий правила! Обсуждение проблемы публично в блоге, а не во внутреннем списке рассылок, доносит эту информацию до большего количества разработчиков. И, быть может (только быть может), команда продукта прочтёт это и скажет: "Уп-с, я думаю, что мы именно так и делаем". Потому что (шокирующее открытие номер четыре!) не все сотрудники Microsoft являются опытными экспертами в программировании интерфейсов пользователя в Win32.

(Статьи, которыми я постоянно стучу по головам своих коллег, включают в себя моё обсуждение CallMsgFilter, историю ключа Shell Folders и напоминание о DefWindowProc. Фактически, я бы сказал, что для каждой статьи "делай так/не делай это" есть хорошие шансы, что приложив достаточно усилий, вы найдёте продукт Microsoft, которые нарушает правило. И вот когда вы его найдёте - сообщите его разработчикам. Даже разница между треем и областью уведомления была написано частично как ответ другим группам, которые неверно используют терминологию).

Поэтому, когда я пишу что-то вроде "приложения не должны делать это" - пожалуйста, всегда добавляйте фразу "а все приложения включают в себя приложения, написанные Microsoft". Когда я пишу "некоторые надоедливые программы" - вставляйте фразу "среди которых могут находится программы от Microsoft". Я не собираюсь вставлять подобные уточнения к каждому предложению, что я пишу. Я предполагаю, что вы достаточно умны, чтобы понять, что общие заявления касаются всех - вне зависимости от того, кто подписывает их чеки.

Конечно, если консенсус моих читателей в том, что я не должен говорить вам не делать что-то, пока все до последнего продукта Microsoft не будут проанализированы, чтобы ни один из них не нарушал это правило - то я могу выполнить это решение. Я просто прекращу публиковать здесь эти советы и буду отправлять их во внутренние списки рассылки. Это будет гораздо меньше работы для меня.

Я нахожу любопытным, что людям нравится указывать на то, что программное обеспечение Microsoft страдает от различных проблем, но они не беспокоятся указывать на эти же проблемы у других программ, не от Microsoft. Нет, я не утверждаю, что всё программное обеспечение Microsoft совершенно. Но что, люди просто получают острые ощущения, указывая пальцем на Microsoft? Или соревнуются в этом?

Я очень стараюсь не называть имён, когда обсуждаю проблему - будь это Microsoft или какая-то другая компания. Цель подобных заметок - не высмеивать людей за их ошибки, а сделать всех более хорошими программистами. Одно дело - когда вы читаете статью и говорите себе: "Упс, я думаю, что я так делал". А совсем другое - когда кто-то другой делает пост на общедоступном веб-сайте: "Эй, идите посмотрите на этого идиота!" - и выкладывает рядом ваше имя или название вашей программы, чтобы все могли видеть.

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

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

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

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

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

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

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