
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.5] |
![]() |
|
Страницы: (117) « Первая ... 13 14 [15] 16 17 ... 116 117 ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#211
,
|
|
я не говорю о полезности union... я говорю о том, как просто это делается в с++ и через какое место это делалось в ОПаскале (не знаю как сейчас, потому и спрашиваю)
|
Сообщ.
#212
,
|
|
|
Этого не всегда достаточно, чтобы быстро понять назначение переменной. Цитата archimed7592 @ я не говорю о полезности union... ![]() |
Сообщ.
#213
,
|
|
|
Цитата Dantes @ Этого не всегда достаточно, чтобы быстро понять назначение переменной. Понятно, что не всегда. Но часто этого вполне достаточно. |
Сообщ.
#214
,
|
|
|
Моя практика программирования говорит об обратном.
|
Сообщ.
#215
,
|
|
|
Цитата wind Все эти вопросы могут возникнуть только если вы не знаете языка, у вас нет удобной ide, вы не располагаете временем. Всё, что понятно компилятору, должно быть понятно и программисту, использующему данный компилятор. Ты не понял вопроса. Цитата Во многих конторах следуют регламентам оформления кода. Так вот, во всех таких регламентах присутствует ограничение на длину строки (обычно, не более 80-100 знаков). Так же необходимо использовать понятные идентификаторы. При условии соблюдения этих двух пунктов возможно появление такой вот конструкции (если нету оператора вроде with): ![]() ![]() SomeObject.GetSomeNestedObject() .DoSomethingWithMyParameter( SomeOtherObject.GetNestedObject(). GetValue(), ...); Это читать гораздо труднее, нежели запись с помощью with. А с with как? ![]() ![]() with SomeObject do with GetSomeNestedObject() do with DoSomethingWithMyParameter( SomeOtherObject.GetNestedObject(). GetValue(), ...); Цитата Или вы хотите сказать, что в случае с ![]() ![]() if (object) foo(bar); всем сишникам сразу станет понятно что и где? Станет понятно, что ни foo, ни bar не являются методами object - чего из конструкции с with совсем не понятно. Цитата Dantes Можно подумать, IDE не способна работать с with. Ты не понял. Пишешь wc. и получаешь список только имен из WINDOWCLASS. А если через with делать, то получишь список из всех идентификаторов, видимых в данном месте. Цитата Ну-ну. Только почему тогда имя выбирается покороче? Чем меньше область видимости, тем меньше длина имени. А несколькостраничный with - это вообще малочитаемо, имхо. Цитата Вообще-то C++ это тоже позволяет. Или ты хочешь сказать, что в C++ нестатические методы в конструкторе нельзя вызывать? ПРи чем тут конструктор? Цитата Предположим, есть какой-то класс SomeClass, свойство Items[Name: string] которого возвращает указатель на класс либо nil (нулевой указатель): Перевожу высказывание и код на C++; ![]() ![]() class C { C* This() { return this; } } .. C* p = 0; if (p->This()) .... |
Сообщ.
#216
,
|
|
|
Цитата Dantes @ Моя практика программирования говорит об обратном. Ну, тут кому как. Если нравится писать километровые идентификаторы для локальных переменных - ну, на вкус и цвет... ![]() |
Сообщ.
#217
,
|
|
|
Цитата wind @ Программист должен знать язык, на котором кодит. ..... ![]() ![]() ![]() Вопросы см. выше, их не я задавал. Еще раз: ![]() ![]() function bar; .... with obj do foo(bar()); Даже если ты суперзнаешь Делфи, не видя определение класса, чьим экземпляром является obj - сможешь сказать, вызовется ли функция bar? |
Сообщ.
#218
,
|
|
|
Цитата Dantes @ К чему говорить о возможности языка, которая на практике используется в единичных случаях Смотря в какой практике. Зайди к эмбеддерам - увидишь, там объединения, битовые поля и препроцессор используются на каждом шагу. |
Сообщ.
#219
,
|
|
|
Цитата Hryak @ Даже если ты суперзнаешь Делфи, не видя определение класса, чьим экземпляром является obj - сможешь сказать, вызовется ли функция bar? А как же Find declaration? На другие вопросы отвечу позже. |
Сообщ.
#220
,
|
|
|
Цитата Smike @ А как же Find declaration? Ну да. Вот и скачешь по файлам ![]() |
Сообщ.
#221
,
|
|
|
Цитата Smike @ А как же Find declaration? Find declaration - прекрасная штука, спору нет. Но зачем искусственно вызывать необходимость пользоваться этим там, где это не нужно? И так становимся рабами инструментов, зачем же усугублять... |
![]() |
Сообщ.
#222
,
|
|
Цитата Hryak @ Но зачем искусственно вызывать необходимость пользоваться этим там, где это не нужно? И так становимся рабами инструментов, зачем же усугублять... Интересный подход. Для того, чтобы забить гвоздь, вам нужен молоток. Без молотка у вас ничего не получится. Если вы используете молоток для забивания гвоздя, то становитесь рабом молотка. Дальше продолжать? Или, может быть, кто-нить сейчас скажет, что в c++ по .h/.cpp/.def файлам скакать не нужно? |
Сообщ.
#223
,
|
|
|
Цитата wind @ Или, может быть, кто-нить сейчас скажет, что в c++ по .h/.cpp/.def файлам скакать не нужно? Нужно, нужно, успокойся. Читаем внимательно: Цитата Но зачем искусственно вызывать необходимость пользоваться этим там, где это не нужно? Я про то, что при использовании with скакать нужно больше. И код получится менее стабильным. Написали класс с некими методами (включая foo), потом юзаем этот класс: ![]() ![]() // где-то: function bar; .... with obj do foo(bar()); Нахрена этот геморр ? |
Сообщ.
#224
,
|
|
|
Цитата wind @ Интересный подход. Для того, чтобы забить гвоздь, вам нужен молоток. Без молотка у вас ничего не получится. Если вы используете молоток для забивания гвоздя, то становитесь рабом молотка. Дальше продолжать? Не совсем корректная аналогия. Правильнее было бы так - "для того, чтобы забить гвоздь, мне обязательно нужен пневмомолоток на аккумуляторах, ибо другим работать не умею". Вот это - привязка к инструменту. Основной инструмент разработчика - это, в первую очередь, компилятор. IDE упрощает определенное количество операций, но писать текст программы рассчитывая на то, что он будет просматриваться/редактироваться в рамках конкретной IDE - ИМХО, ошибка. |
Сообщ.
#225
,
|
|
|
Цитата Hryak @ Через годик решаем класс дополнить методом bar() - и всё тихо-тихо-незаметно ломается. Нахрена этот геморр ? Надуманный пример. Никогда не сталкивался с трудностями при использовании with. Взял наугад первый попавшийся чужой код с with. Мне все понятно ![]() ![]() ![]() with RGB do begin if R > 0 then R := Power(R, Gamma) else R := 0; if G > 0 then G := Power(G, Gamma) else G := 0; if B > 0 then B := Power(B, Gamma) else B := 0; end; Даже если бы я не знал структуры RGB, то легко догадаться, что это именно R, G и B. |