Общается ли сообщество RSDN напрямую с Microsoft???
От: Business  
Дата: 12.05.07 21:11
Оценка: -8 :))) :))) :))
Здраствуйте.

Мой вопрос более ёмкий:
"Все вопросы рядового программиста, касаемые программирования, применения языка,
желания иметь большую гибкость или нужный инструментарий при создании своих проектов,
доходят ли до Microsoft, если таковые трудности "применения" возникают не у программистов этой корпорации?"

Лично мне, всего-навсего при наследовании своего "CheckBoxField"
от "стандартного" "CheckBox" не хватает ОГРОМНОГО количества "инструментария"...
(см мои два последних вопроса)
http://www.rsdn.ru/Forum/Message.aspx?mid=2479403&only=1
http://www.rsdn.ru/Forum/Message.aspx?mid=2482186&only=1

Сначала вообщем:

1. Как говорится: "Хоть ты лопни, хоть ты тресни", но из типов значений ссылочных типов не сделать...
Пример:
Если есть конструктор у структуры, то он вызывается как new MyStruct();
НО все равно эта структура будет размещаться в стеке (вроде NEW есть...?) ,
т.е. при передаче такой структуры в метод передается не ссылка на структуру,
а её значение. Возникает вопрос: зачем "NEW", когда тот же "INT"
можно и без "NEW" сделать...

Верно и обратное — ссылочным типом, тот же "Int" не сделаешь...(т.е. не разместишь в куче)
Или же unsafe код писать
Весь этот вопрос конечно пустяки — есть "ref", но "Литературность" хромает...
------------------------------------------------------------------------------------
2. Почему все поля, методы, свойства не сделать virtual-ными "по умолчанию", что мешает...?
Наследуешь от базового класса что-то —
Захотел — переопределил
Не захотел — пользуйся тем что есть... (см мой предыдущий вопрос про генерацию сообщения "TextChanged")
http://www.rsdn.ru/Forum/Message.aspx?mid=2482186&only=1:

__>Базовый класс вызывает СВОЙ защищенный метод "OnTextChanged(new EventArgs())",

__>который вызывает сообщение "TextChanged" БАЗОВОГО класса,
__>а мне нужно передать сообщение моего класса,
__>т.к. я переопределил свойство "Text", а следовательно и сообщение должно быть "ПРАВИЛЬНОЕ":
__>с правильным текстом (this.originalText).

И соответственно, сделать какое-то "слово", чтобы нельзя было переопределять... (как sealed)
------------------------------------------------------------------------------------
3. <- На мой взгляд, самое главное!!!
Привнесли в программирование (по-моему, JAVA-вцы) понятие "СВОЙСТВА",
а обеспечить в C# их достойную поддержку забыли (ну забыли-то, конечно, Microsoft-овцы).

Сейчас, практически, не осталось классов у которых имеются открытые поля —
Везде — СВОЙСТВА!!!

А как передать свойство по ссылке в метод?, чтобы что-то там (в методе),
"подумать" и что-то сделать с этим свойством...
Или передать в блок set другого свойства это же свойство таким же "Макаром".
Ведь как хорошо ассоциировать СВОЙСТВО с обычным ПОЛЕМ, но с полем это возможно, а со свойством — нет

Без этих возможностей принцип "Инкапсуляции" хромает.
т.е: (возможно другими словами, но как придумал...)
Некой функции что-то подается на "ВХОД" а на "ВЫХОДЕ" получаешь нужное значение.
Это хорошо тем, что код функции можно скопировать в другой класс, например,
и функция будет работать (всеравно) правильным образом, т.к. она не зависит от текста,
в котором она написана...
А если функция зависит от текста, в пределах которого она определена?
Тогда возвращаемся к древним временам — к ПРОЦЕДУРНОМУ программированию... Где "дизайн" хромает
(см. ответ AndrewVK "Re[3]: Как внутри СВОЙСТВА изменить входящее значение?" на мой вопрос)
http://www.rsdn.ru/Forum/Message.aspx?mid=2480482&amp;only=1

Хорошо, что в C# 2.0 Microsoft-овцы сделали нововведение для свойств:
Теперь можно указывать параметры доступа для set и для get
(protected get{}public set{} — например).
А мне нужно еще и ovverride get{} и new set{} и все это в одном свойстве... (пример после...)
Я думаю кому-то может понадобиться и abstract get{}...


Пример с разными new и override (главное понять, что что-то НЕ ТО,
а пример я просто для "Мыслей" сделал):
    public class Form1 : Form
    {
        private CheckBoxTest checkBoxTest  = new CheckBoxTest(); //верхняя "галочка" на форме
        private CheckBox     checkBox      = new CheckBoxTest(); //нижняя  "галочка" на форме

        public Form1()
        {
            this.Controls.Add(this.checkBoxTest); //верхняя "галочка" на форме
            checkBoxTest.Text = "Hello";

            this.Controls.Add(this.checkBox);     //нижняя  "галочка" на форме
            this.checkBox.Location = new Point(0, 50);
            checkBox.Text = "Hello";
        }
        class CheckBoxTest : System.Windows.Forms.CheckBox
        {
            public CheckBoxTest()
            {
            }
            public new string Text  //Изменяьть здесь new на override и обратно (ну и "запускать")
            {
                get   {  return "Hi"; }           //должен быть override
                set   {  base.Text = "GoodBy";  } //должен быть new
            }
        }
    }

Несколько слов о примере:
Как я понял, свойство "Text" разработчики "CheckBox" унаследовали от "ButtonBase",
Таким образом я переопределяю свойство (если пишу override),
то я переопределяю свойство "Text" типа "ButtonBase".
А разработчики "CheckBox" (и я их за это не виню), просто использовали его в своих целях
(стали "рисовать" его на своем "CheckBox"-е).
А если я преследую цель: "Показывать ("рисовать" т.е.) на CheckBox-е не то,
что желаю хранить в свойстве...",
да и еще иметь надежную "Полиморфию", тогда это у меня не получается!!!!!!!!!

Еще раз напомню: Не получается, потому, что CheckBox использует МОЁ свойство "Text"
для рисования на СВОЁМ CheckBox-е (если я пишу override), т.е. использует "МОЙ" блок "get",
а я желаю, что-бы CheckBox рисовал "СВОЙ", а пользователи моего (в данном случае CheckBoxTest),
видели на экрано одно ("base.Text"), а при обращении к свойству получали другое...
т.е. использовали "МОЙ" блок "get"

КОГДА от Microsoft-а ЭТОГО ожидать ?????????

14.05.07 12:03: Перенесено из '.NET'
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re: Общается ли сообщество RSDN напрямую с Microsoft???
От: Аноним  
Дата: 12.05.07 21:52
Оценка:
Здравствуйте, Business,

Из всего написанного Вами в этом и других постах, следует вывод, что вы не понимаете сути объектно-ориентированного программирования и может не только объектно-ориентированного.
Так что я вам советую либо запасаться хорошей литературой либо заняться чем то попроще...
Re: Общается ли сообщество RSDN напрямую с Microsoft???
От: romangr Россия  
Дата: 13.05.07 03:48
Оценка: +4
Здравствуйте, Business, Вы писали:

... Поток сознания поскипан ...

B>КОГДА от Microsoft-а ЭТОГО ожидать ?????????


В Microsoft работают здравомыслящие люди. Поэтому правильный ответ — НИКОГДА
... << RSDN@Home 1.2.0 alpha rev. 670>>
Re: Общается ли сообщество RSDN напрямую с Microsoft???
От: _d_m_  
Дата: 14.05.07 05:04
Оценка:
Здравствуйте, Business, Вы писали:

B>Здраствуйте.


B>Мой вопрос более ёмкий:

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

Может стоит подумать о Managed С++
Re: Общается ли сообщество RSDN напрямую с Microsoft???
От: Александр Малафеев Россия http://www.meet-tech.com
Дата: 14.05.07 05:58
Оценка:
Здравствуйте, Business, Вы писали:

B>Здраствуйте.


B>Мой вопрос более ёмкий:

B>"Все вопросы рядового программиста, касаемые программирования, применения языка,
B> желания иметь большую гибкость или нужный инструментарий при создании своих проектов,
B> доходят ли до Microsoft, если таковые трудности "применения" возникают не у программистов этой корпорации?"

B>Лично мне, всего-навсего при наследовании своего "CheckBoxField"

B>от "стандартного" "CheckBox" не хватает ОГРОМНОГО количества "инструментария"...
B>(см мои два последних вопроса)
B>http://www.rsdn.ru/Forum/Message.aspx?mid=2479403&amp;only=1
B>http://www.rsdn.ru/Forum/Message.aspx?mid=2482186&amp;only=1

Ну это все действительно трудности одного программиста, ну а не языка.
Если вам действительно чего то нехватает в CheckBox'e, то никто не мешает написать свой CheckBox, но уж точно не ждать этого от Microsoft.

B>Сначала вообщем:


B>1. Как говорится: "Хоть ты лопни, хоть ты тресни", но из типов значений ссылочных типов не сделать...


Да, ссылочнм не сделать, но если постараться то даже их можно разместить в куче и работать без боксинга/анбоксинга.

B> Пример:

B> Если есть конструктор у структуры, то он вызывается как new MyStruct();
B> НО все равно эта структура будет размещаться в стеке (вроде NEW есть...?) ,
B> т.е. при передаче такой структуры в метод передается не ссылка на структуру,
B> а её значение. Возникает вопрос: зачем "NEW", когда тот же "INT"
B> можно и без "NEW" сделать...

Здесь вам нужно понять когда вообще нужно использовать struct а когда class что и в каком случае будет эфективнее.


B> Верно и обратное — ссылочным типом, тот же "Int" не сделаешь...(т.е. не разместишь в куче)

B> Или же unsafe код писать
B> Весь этот вопрос конечно пустяки — есть "ref", но "Литературность" хромает...
B>------------------------------------------------------------------------------------
B>2. Почему все поля, методы, свойства не сделать virtual-ными "по умолчанию", что мешает...?

Тут действительно книжка по ООП должна помочь
И нельзя так сделать еще по тому что вызов виртуального метода происходит несколько медленне чем вызов обычного метода.
Поэтому и придумали слово sealed, чтобы компилятор мог определить где нужны виртуальные вызовы а где нет.

B>------------------------------------------------------------------------------------

B>3. <- На мой взгляд, самое главное!!!
B> Привнесли в программирование (по-моему, JAVA-вцы) понятие "СВОЙСТВА",
B> а обеспечить в C# их достойную поддержку забыли (ну забыли-то, конечно, Microsoft-овцы).

B> Сейчас, практически, не осталось классов у которых имеются открытые поля -

B> Везде — СВОЙСТВА!!!

B> А как передать свойство по ссылке в метод?, чтобы что-то там (в методе),

B> "подумать" и что-то сделать с этим свойством...

Да в принципе без проблем можно передать получить делегат на геттер или сеттер и передать, только зачем ...


B> Без этих возможностей принцип "Инкапсуляции" хромает.

См. пункт про ООП книжку

B> т.е: (возможно другими словами, но как придумал...)

B> Некой функции что-то подается на "ВХОД" а на "ВЫХОДЕ" получаешь нужное значение.
B> Это хорошо тем, что код функции можно скопировать в другой класс, например,
B> и функция будет работать (всеравно) правильным образом, т.к. она не зависит от текста,
B> в котором она написана...
B> А если функция зависит от текста, в пределах которого она определена?
B> Тогда возвращаемся к древним временам — к ПРОЦЕДУРНОМУ программированию... Где "дизайн" хромает
B> (см. ответ AndrewVK "Re[3]: Как внутри СВОЙСТВА изменить входящее значение?" на мой вопрос)
B>http://www.rsdn.ru/Forum/Message.aspx?mid=2480482&amp;only=1

Ну здесь идет не возврат к ПРОЦЕДУРНОМУ программирования, а похоже что вы из него еще не вышли.
Предложенный вами подход по копированию функции обчно используется в Индии и называется Ctrl+C\Ctrl+V.


B> Хорошо, что в C# 2.0 Microsoft-овцы сделали нововведение для свойств:

B> Теперь можно указывать параметры доступа для set и для get
B> (protected get{}public set{} — например).
B> А мне нужно еще и ovverride get{} и new set{} и все это в одном свойстве... (пример после...)
B> Я думаю кому-то может понадобиться и abstract get{}...


B> Еще раз напомню: Не получается, потому, что CheckBox использует МОЁ свойство "Text"

B> для рисования на СВОЁМ CheckBox-е (если я пишу override), т.е. использует "МОЙ" блок "get",
B> а я желаю, что-бы CheckBox рисовал "СВОЙ", а пользователи моего (в данном случае CheckBoxTest),
B> видели на экрано одно ("base.Text"), а при обращении к свойству получали другое...
B> т.е. использовали "МОЙ" блок "get"

Ну не знаю как вы, но я думаю что большинство программистов думаю что свойство text предназначено именно для вывода его на экран, ну а не как
не для хранения своих данных, для этого и сделали свойство Tag.
Re: Общается ли сообщество RSDN напрямую с Microsoft???
От: nikov США http://www.linkedin.com/in/nikov
Дата: 14.05.07 08:02
Оценка:
Здравствуйте, Business, Вы писали:

B>3. <- На мой взгляд, самое главное!!!

B> Привнесли в программирование (по-моему, JAVA-вцы) понятие "СВОЙСТВА",
B> а обеспечить в C# их достойную поддержку забыли (ну забыли-то, конечно, Microsoft-овцы).

B> Сейчас, практически, не осталось классов у которых имеются открытые поля -

B> Везде — СВОЙСТВА!!!

B> А как передать свойство по ссылке в метод?, чтобы что-то там (в методе),

B> "подумать" и что-то сделать с этим свойством...
B> Или передать в блок set другого свойства это же свойство таким же "Макаром".
B> Ведь как хорошо ассоциировать СВОЙСТВО с обычным ПОЛЕМ, но с полем это возможно, а со свойством — нет

Передать свойство через ref-параметр не получится потому, что ref-параметры внутренне представляются управляемыми указателями на область памяти, а свойство не является областью памяти. Тем не менее, если Вам нужно написать метод, который мог бы "получать" свойства различных объектов и что-то с ними делать, то нужно сделать свойство частью интерфейса.

using System;

interface IText
{
    string Text { get; set; }
}

// один класс, поддерживющий свойство Text
class TextBox : IText
{
    public string Text
    {
        get { throw new NotImplementedException(); }
        set { throw new NotImplementedException(); }
    }
}

// еще один класс, поддерживющий свойство Text
class Label : IText
{
    public string Text
    {
        get { throw new NotImplementedException(); }
        set { throw new NotImplementedException(); }
    }
}

class Program
{
    static void Main()
    {
        TextBox obj1 = new TextBox();
        Label obj2 = new Label();
        Foo(obj1);
        Foo(obj2);
    }

    // вот так выглядит метод, "получающий" свойство
    static void Foo(IText obj)
    {
        obj.Text = "Bugaga";
    }
}


Интерфейсы — это очень гибкий способ полиморфной работы с разнородными объектами, но если этого для Вас окажется недостаточно, то можно пометить нужные свойства каким-либо атрибутом, и получать доступ к ним через reflection.

Желаю вам УСПЕХОВ!
Re: Общается ли сообщество RSDN напрямую с Microsoft???
От: Eugeny__ Украина  
Дата: 14.05.07 08:20
Оценка:
Здравствуйте, Business, Вы писали:


B>2. Почему все поля, методы, свойства не сделать virtual-ными "по умолчанию", что мешает...?


Единственное, с чем, пожалуй, согласен.
Но принципиально это не такая уж и проблема.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[2]: Общается ли сообщество RSDN напрямую с Microsoft???
От: Business  
Дата: 14.05.07 14:17
Оценка:
Здравствуйте, nikov, Вы писали:

N>Передать свойство через ref-параметр не получится потому, что ref-параметры внутренне представляются управляемыми указателями на область памяти, а свойство не является областью памяти. Тем не менее, если Вам нужно написать метод, который мог бы "получать" свойства различных объектов и что-то с ними делать, то нужно сделать свойство частью интерфейса.


Если Вы говорите "не получится", только в этой версии C#, то я с вами СОглашусь
т.к. не хватает инструментария...
А если имеете ввиду, то что, вообще нельзя этого сделать, то тут я готов поспорить...

N>Интерфейсы — это очень гибкий способ полиморфной работы с разнородными объектами, но если этого для Вас окажется недостаточно, то можно пометить нужные свойства каким-либо атрибутом, и получать доступ к ним через reflection.


Я считаю: "Зачем находить обходные пути, когда можно один раз проложить трассу".

Я благодарен, за ваши примеры nikov, они мне помогают (необходимы в ЭТОЙ версии C#), но, я думаю, вы согласитесь,
Что "выражение": "Передать свойство по ссылке в метод" <-<- гораздо короче, и следовательно, компактней и "глазу приятней", чем писать дополнительный код обеспечения передачи свойства по ссылке в метод, да и еще и для конкретной ситуации.

Не обижайтесь nikov , но на мой вопрос так никто и не ответил:
"Передаются ли сведения о том, что еще нужно рядовому разработчику для чистого кода и гибкости в Microsoft";

Вот пример, который не только мне мешает(мешал): (заранее говорю, что как его решить — я знаю!!!: пример — ради примера...)

В Visual Studio 2003 когда создавался новый столбец для ListView
то в конструкторе этого столбца ширину "Width" можно было указать, как "-1", для того, чтобы, ширина столбца была равна самой широкой строке в этом столбце, а это не возможно было сделать.
Нужно было, опять-таки, находить обходной путь решения, при этом, ломалась вся "красота" кода.

Т.е. у рядового программиста возникала проблема...

А в Microsoft-e собирают информацию о не только ошибках в их библиотеках, но и о том, какой инструментарий хочет видеть программист? И собирает ли такую информацию с таких же форумов. как RSDN, например, или пользуется только своими сотрудниками? (я где-то слышал что их около 60000чел.)
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re[2]: Общается ли сообщество RSDN напрямую с Microsoft???
От: Business  
Дата: 14.05.07 14:29
Оценка: -1 :)))
Здравствуйте, _d_m_, Вы писали:

___>Здравствуйте, Business, Вы писали:


B>>Здраствуйте.


B>>Мой вопрос более ёмкий:

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

___>Может стоит подумать о Managed С++


Я с него перешел на C#, потому, что там одна "белеберда" пишется (когда код пишешь)
Закорючки, крючечки, такие скобочки, другие скобочки, звездочки.

Сидишь как "шифровальщик", к тому же в C++, так много типов строк (я как-то считал — вроде 7),
что я сразу от туда сбежал...\
На этод код неприятно смотреть, много нужно знать "тонкостей"

А в C# меньше исключений из правил... да и текста нужно писать меньше, как следствие — меньше ошибок
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re[3]: Общается ли сообщество RSDN напрямую с Microsoft???
От: nikov США http://www.linkedin.com/in/nikov
Дата: 14.05.07 14:33
Оценка:
Здравствуйте, Business, Вы писали:

B>Не обижайтесь nikov , но на мой вопрос так никто и не ответил:

B>А в Microsoft-e собирают информацию о не только ошибках в их библиотеках, но и о том, какой инструментарий хочет видеть программист? И собирает ли такую информацию с таких же форумов. как RSDN, например

Что касается этого вопрос: да, возможность эскалировать проблему в Microsoft существует. Я даже делал это пару раз. Но надо иметь в виду, что туда и так поступает достаточно большое количество замечаний и предложений, поэтому проблемы, ценность решения которых сомнительна, да к тому же требующих серьезной перестройки исполняющей среды, вряд ли будут решены за разумное время.
Re[2]: Общается ли сообщество RSDN напрямую с Microsoft???
От: MaximVK Россия  
Дата: 14.05.07 16:14
Оценка:
Здравствуйте, Eugeny__, Вы писали:

B>>2. Почему все поля, методы, свойства не сделать virtual-ными "по умолчанию", что мешает...?


E__>Единственное, с чем, пожалуй, согласен.

E__>Но принципиально это не такая уж и проблема.

А зачем?
Re[3]: Общается ли сообщество RSDN напрямую с Microsoft???
От: Business  
Дата: 15.05.07 08:51
Оценка:
Здравствуйте, MaximVK, Вы писали:

MVK>Здравствуйте, Eugeny__, Вы писали:


B>>>2. Почему все поля, методы, свойства не сделать virtual-ными "по умолчанию", что мешает...?


E__>>Единственное, с чем, пожалуй, согласен.

E__>>Но принципиально это не такая уж и проблема.

MVK>А зачем?


Я считаю, что "иметь возможность" — драгоценней чем иметь "быструю реализацию"
Даже если вызов бы осуществлялся в 10 раз медленнее...
а моя проблема решалась бы быстрей если бы это было возможно:
http://www.rsdn.ru/Forum/Message.aspx?mid=2482186&amp;only=1

Так же я считаю, что время программиста, а так же следовательно и ЦЕНА конечного продукта
дороже, когда долго создаешь программу.
А компьютеры с каждым разом все быстрей...
"Производная функции" — со школы не пойму чё это и в какой момент нужно будет применить... :???:
Re[3]: Общается ли сообщество RSDN напрямую с Microsoft???
От: jojoza  
Дата: 15.05.07 15:07
Оценка:
Здравствуйте, Business, Вы писали:

B>В Visual Studio 2003 когда создавался новый столбец для ListView

B>то в конструкторе этого столбца ширину "Width" можно было указать, как "-1", для того, чтобы, ширина столбца была равна самой широкой строке в этом столбце, а это не возможно было сделать.

расшифруйте, пожалуйста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.