Как стать автором
Обновить

Странности в MSDN

Время на прочтение4 мин
Количество просмотров1K
MSDN
MSDN, если кто не знает, это Microsoft Developer Network — сборник разнообразной документации(плюс форумы, блоги, бюллетни т.д.) по продукции компании Microsoft (и не только). Я лично этот ресурс уважаю, часто пользуюсь и считаю его полезным. Но как-то так вышло, что в последнее время несколько раз подряд напоролся на очень странные статьи и код в примерах. Нет, я не говорю об опечатках, битых ссылках или неверной верстке — с кем не бывает?

Тут вещи поинтереснее.


Страница: Константы (руководство по программированию на C#)
Вкратце суть: на страничке рассказывается что такое константы, зачем они нужны. Объясняется, что константа — это такая величина, которая известна заранее, неизменна, не зависит от действий пользователя и прочих внешних факторов. Дальше приводится пример констант:

class Calendar2
{
const int months = 12, weeks = 52, days = 365;
}


Неправда ли, отличный пример константы — 365 дней в году! Ладно бы это была опечатка или вообще полное отсутствие примера. Ладно бы такое было написано в какой-нибудь другой теме, где это не важно и можно было не обращать внимание. Но ведь нет — суть понятия константы иллюстрируется примером, константой не являющимся и полностью противоречащим объясняемому понятию. Жуть.

По этому поводу, мне, к стати, вспоминается другая книга по C++, где необходимость использования констант объяснялась с упором на то, что объявив константу и использовав её в коде, мы сможем при её изменении в будущем обойтись правкой всего одного места в коде. Как пример приводилось объявление const double PI = 3.1415926. Ну, типа, если число Пи измениться, то надо будет поменять только в одном месте. :)

Страница: override (C# Reference) (открывать в установленном MSDN 2008 и без приставки htp://)
Вкратце суть: на странице описывается модификатор override для языка C#. Рассказывается, что этот модификатор обязывает в классе-наследнике реализовать метод родительского класса. И приводится пример с базовым классом ShapesClass, от которой наследуется класс Square. В родительском классе есть метод Area, который там не определен, но с атрибутом override, а вот в классе Квадрат есть его реализация. Площадь КВАДРАТА считается как ширина квадрата умноженная на высоту квадрата. :) Я уж было даже засомневался, что «square» — это квадрат (может прямоугольник). Но нет — и гугл и яндекс и лингво первым и главным переводом слова пишут именно «квадрат». А прямоугольник — это «rectangle».

Пример кода:
abstract class ShapesClass
{
abstract public int Area();
}

class Square : ShapesClass
{
int x, y;
// Because ShapesClass.Area is abstract, failing to override
// the Area method would result in a compilation error.
public override int Area()
{
return x * y;
}
}


Тут, справедливости ради, нужно признать что в онлайн-версии MSDN что-то около конца 2009-го года страница была исправлена на:

public override int Area()
{
return side * side;
}


Что ж, радует, что наука не стоит на месте и столь передовые достижения, как метод рассчета площади квадрата, доступны в MSDN уже в 2009 году.

Страница: описание тега dns в конфигурационной схеме WCF
Вкратце суть: тег dns позволяет задать то, чем по сути и является DNS — соответствие имени хоста IP-адресу. Дока написана верна, и пример, в принципе рабочий и нормальный. Широкую улыбку вызывает объяснение примера:

"...Users can remember display names, such as http://go.microsoft.com/fwlink/?prd=10929&pver=3.5&plcid=0x409&clcid=0x409&ar=MS&sar=MS or ..., easier than number-based addresses, such as 207.46.131.137."

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

Страница: Key Scan Codes
Вкратце суть: на странице даётся перечень скан-кодов клавиш клавиатуры. Эти значения широко применяются в драйверах, низкоуровневом вводе-выводе и т.д. Мне, например, они понадобились для написания собственного преобразователя Scan codes <-> Virtual Key Codes, поскольку аналога функции MapVirtualKey в .NET нету, а юзать вызов из user32.dll как-то не хочеться. Но что мы видим по приведенной выше ссылке? Скан-коды предоставлены в виде картинки с нарисованной на ней таблицей значений. При чем, судя по качеству, картинка сканировалась из какой-то книги допотопного года и плохо распознанные части потом обводились вручную болдом. И как мне, спрашивается, выдрать эти значения оттуда? Переписывать? Поиск в Гугле, конечно, рулит и коды в виде текста находятся, но пример в MSDN — это жесть.

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

Updated:
Веселая странность от adontz
Страница: drink Attribute
Вкратце суть: разработчики Active Directory предположили, что важным атрибутом юзера наравне с его именем, паролем, телефоном и т.д. является его любимый напиток. И эта информация тоже должна храниться в базе данных. Более того, согласно описанию поля любимый напиток может быть не только у человека, но и у любого объекта Active Directory.

P.S. Я ведь не сильно обнаглею, если робко попрошу минусующих черкнуть комментарий с замечаниями? Заранее спасибо.
Теги:
Хабы:
-1
Комментарии20

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн