Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Вниз

Вот завел себе блог   Найти похожие ветки 

 
ТЮзер (в нете через паяльник)   (2007-03-11 23:26) [160]

А у хелпера есть DoWork? Или что-то еще там есть?


 
oxffff ©   (2007-03-11 23:28) [161]


> Ты никак не хочешь понять один умный вещь - у чужих разработчиков
> интерфейс класса обычно документирован. И использующий код
> в первую очередь будет поиcках понимания методов читать
> документацию, а не гадать, кто же догадался придумать супер-
> пупер хелпер в котором объявлен метод, вызываемый в коде.
>


С этой точки зрения нет ничего проще документировать и helper методы тоже.
Ведь все равно придется описывать процедуры и функции.

Документация ваша и вам также ее придется писать и для своих процедур и функций. Только процедуры и функции будет еще и разбросаны.

Так что описывать придется и то и другое.


 
oxffff ©   (2007-03-11 23:29) [162]


> А у хелпера есть DoWork? Или что-то еще там есть?


Дык, вы почитайте. Мне все равно вам не объяснить.


 
oxffff ©   (2007-03-11 23:31) [163]


>  Я смотрю в help - у TStrings нету метода DoWork. Впадаю
> в ступор.


Дык вы же смотрите свою документацию.
А почему вы не описали в ней процедуры и функции?


 
ТЮзер (в нете через паяльник)   (2007-03-11 23:33) [164]

> oxffff ©   (11.03.07 23:29) [162]

Мне можно объяснить. Просто я не в курсе, что такое хелпер.


 
Игорь Шевченко ©   (2007-03-11 23:34) [165]

oxffff ©   (11.03.07 23:28) [161]


> С этой точки зрения нет ничего проще документировать и helper
> методы тоже.
> Ведь все равно придется описывать процедуры и функции.


То есть, ты предлагаешь выпустить дополнение к help по vcl, в котором будет сказано, что встретив метод DoWork у Memo.Lines надо не пугаться ?
Десяток разработчиков напишет два десятка helperов к TMemoStrings, каждый из них выпустит свою документацию, а программист читающий код будет держать в голове, что надо еще несколько источников просмотреть ?

Suxx


 
oxffff ©   (2007-03-11 23:35) [166]

Согласитесь что проблема надумана.
Конечно я не собираюсь использовать их повсеместно. Поскольку свои проекты я веду сам. То  мне нужен рефакторинг. А если чужые проекты, то я буду знать что есть легальные средства расширения, хотя бы из-за общего scope.


 
oxffff ©   (2007-03-11 23:41) [167]


> То есть, ты предлагаешь выпустить дополнение к help по vcl,
>  в котором будет сказано, что встретив метод DoWork у Memo.
> Lines надо не пугаться ?
> Десяток разработчиков напишет два десятка helperов к TMemoStrings,
>  каждый из них выпустит свою документацию, а программист
> читающий код будет держать в голове, что надо еще несколько
> источников просмотреть ?
>
> Suxx


Хорошо. Если вы определили набор функций и процедур для расширения, которые хотят использовать другие. Вы все равно будете писать документацию.

Человек получает документацию с набором средств и ему все равно придется ее читать будь то helper или набор процедур и функций.

Поэтому проблема надумана.


 
Игорь Шевченко ©   (2007-03-11 23:43) [168]

oxffff ©   (11.03.07 23:35) [166]


> Согласитесь что проблема надумана.


В каждой шутке есть доля правды.


> Поскольку свои проекты я веду сам. То  мне нужен рефакторинг.
>  А если чужые проекты, то я буду знать что есть легальные
> средства расширения, хотя бы из-за общего scope.


Я все-таки предпочитаю, чтобы у знакомых классов не встречались неожиданные методы. Согласись, что за время работы с той же VCL программист запоминает интерфейс тех классов, с которыми ему приходится регулярно иметь дело, а встретив неожиданный метод легко впасть в ступор. Можно безусловно и в среде посмотреть, но это долго и отвлекает от основного занятия - понимания кода.


 
Игорь Шевченко ©   (2007-03-11 23:47) [169]

oxffff ©   (11.03.07 23:41) [167]


> Хорошо. Если вы определили набор функций и процедур для
> расширения, которые хотят использовать другие. Вы все равно
> будете писать документацию.


Я буду определять набор функций так, чтобы они не приводили в замешательство тех, кто уже привык к документированному интерфейсу класса.

Посмотри же, наконец, где сам Борланд применяет helperы.

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


 
oxffff ©   (2007-03-11 23:47) [170]


> Я все-таки предпочитаю, чтобы у знакомых классов не встречались
> неожиданные методы. Согласись, что за время работы с той
> же VCL программист запоминает интерфейс тех классов, с которыми
> ему приходится регулярно иметь дело, а встретив неожиданный
> метод легко впасть в ступор. Можно безусловно и в среде
> посмотреть, но это долго и отвлекает от основного занятия
> - понимания кода.


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

-процедуры и функции или
-helper или
-adapter

Эти проблемы его.


 
oxffff ©   (2007-03-11 23:49) [171]


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


Все рано или поздно подтягиваются, кто работает в команде.
Кент Бек и его XP говорит об этом.


 
oxffff ©   (2007-03-11 23:51) [172]


> Посмотри же, наконец, где сам Борланд применяет helperы.


Закончу dial up и обязательно посмотрю сегодня.


 
Игорь Шевченко ©   (2007-03-11 23:59) [173]

oxffff ©   (11.03.07 23:49) [171]


> Все рано или поздно подтягиваются, кто работает в команде.
>
> Кент Бек и его XP говорит об этом.


У меня несколько иные впечатления чем у Бека. Может мне не повезло, а может, наоборот, Беку повезло.

И потом, не так страшен мессия, как его апостолы. Апостолов Бека надо давить в зародыше, потому что они из книги про ХР выбирают только передвижение стульев.


 
oxffff ©   (2007-03-12 00:02) [174]


> И потом, не так страшен мессия, как его апостолы. Апостолов
> Бека надо давить в зародыше, потому что они из книги про
> ХР выбирают только передвижение стульев.


Кстати я не сторонник XP.
Но есть практики, которые мне симпатичны.


 
Игорь Шевченко ©   (2007-03-12 00:18) [175]

oxffff ©   (12.03.07 00:02) [174]

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

Но стулья двигать - это нонсенс :)


 
jack128 ©   (2007-03-12 01:02) [176]

vuk ©   (11.03.07 22:51) [156]
И давно? Нет, про множественную реализацию, это я в курсе. Но это не наследование и оно не у интерфейсов, а у классов.

Нет - это мне спать пора :-)


 
euru ©   (2007-03-12 01:07) [177]


> Игорь Шевченко ©   (11.03.07 23:23) [159]


> С чего началась дискуссия - с вызова Memo.Lines.DoWork.
> Я смотрю в help - у TStrings нету метода DoWork. Впадаю
> в ступор.
А с виртуальными методами разве не так? В справке описано одно поведение, в программе наблюдается несколько (или радикально) другое. Неужели это тоже вызовет ступор?


 
Игорь Шевченко ©   (2007-03-12 10:46) [178]

euru ©   (12.03.07 01:07) [177]


> А с виртуальными методами разве не так? В справке описано
> одно поведение, в программе наблюдается несколько (или радикально)
> другое. Неужели это тоже вызовет ступор?


Виртуальные методы называются, пардон, как в документации. Я практически весь топик веду речь об именах, а не о поведении.


 
euru ©   (2007-03-12 11:38) [179]


> Игорь Шевченко ©   (12.03.07 10:46) [178]
Называются-то они как в документации, но вот действия могут выполнять не совсем те, что в документации описаны, потому что разработчик создал потомка и перекрыл в нём эти виртуальные методы.

Более того, если наличие нового метода, непредусмотренного документацией, может быть обнаружена на этапе просмотра листингов, то нестандарное поведение (отличающееся от описания в документации), скорее всего, будет обнаружено только на этапе исполнения программы.


 
oxffff ©   (2007-03-12 11:45) [180]

Because records have a default no-argument constructor, any user-defined record constructor must have one or more parameters.

Интересно

Если объявить в record такой конструктор
constructor My;

то не ругается.

А если такой  

constructor Create;

то ругается
[Pascal Error] Unit1.pas(14): E2394 Parameterless constructors not allowed on record types.


 
Игорь Шевченко ©   (2007-03-12 12:14) [181]

euru ©   (12.03.07 11:38) [179]

Мы о разном. Я говорю об удобстве чтения кода, о том, что встречая документированные методы у документированных классов, программист в уме определяет вероятное поведение программы. Ключевое слово - вероятное. Если кто-то спьяну сделал виртуальный метод, который делает совершенно иное, чем описано, то пусть получает свой эцих с гвоздями и перевоспитывается


 
euru ©   (2007-03-12 12:43) [182]


> Игорь Шевченко ©   (12.03.07 12:14) [181]
Ну так если встретился метод, неописанный в документации, неужели сразу не возникнет мысль (тем более, зная о наличии в языке такой конструкции как helper), что это творение стороннего разработчика, который расширял стандартный класс?

А далее как и с любыми разработками третьих лиц: поиск информации в их документации либо поиск в исходниках.


 
Игорь Шевченко ©   (2007-03-12 12:47) [183]

euru ©   (12.03.07 12:43) [182]

Найти можно все, что угодно и где угодно, было бы время. А его, времени, обычно нету. Можно и методы называть meth1, meth2, meth3, все равно, со временем разберешься, что они делают, не так ли ?


 
oxffff ©   (2007-03-12 12:50) [184]

Пока Дмитрий Тимохов еще пишет свой блог.
Мы уже читаем часть 3

http://hallvards.blogspot.com/


 
Игорь Шевченко ©   (2007-03-12 13:11) [185]

oxffff ©   (12.03.07 12:50) [184]


> http://hallvards.blogspot.com/


"Neat hack, no? ;)"

Вот таких вот вещей и хотелось бы избегать


 
vuk ©   (2007-03-12 13:23) [186]

to Игорь Шевченко ©   (12.03.07 13:11) [185]:
Согласен. Но он, вообще говоря, написал, зачем это было сделано именно так, и что это временное явление.


 
euru ©   (2007-03-12 13:25) [187]


> Игорь Шевченко ©   (12.03.07 13:11) [185]
Была бы возможность использовать в хелперах поля, таких способов реализации было бы меньше.


 
euru ©   (2007-03-12 13:30) [188]


> Игорь Шевченко ©   (12.03.07 12:47) [183]
Ну так здесь, скорее всего, проблема в распределении своего времени, а не в хелперах. На изучение документации VCL ведь тоже было потрачено какое-то время.


 
vuk ©   (2007-03-12 13:42) [189]

to euru ©   (12.03.07 13:25) [187]:
>Была бы возможность использовать в хелперах поля, таких способов
>реализации было бы меньше.
Такой возможности нет и не будет. По причине того, что у хелпера нет экземпляров.


 
Игорь Шевченко ©   (2007-03-12 13:43) [190]

euru ©   (12.03.07 13:30) [188]

VCL как раз понятна, так что изучается довольно легко.


 
euru ©   (2007-03-12 14:02) [191]


> vuk ©   (12.03.07 13:42) [189]
Но ведь компилятор-то знает, что это хелпер. Вот и выдавал бы синтаксическую ошибку при использовании хелпера вне контекста класса.


 
euru ©   (2007-03-12 14:05) [192]


> Игорь Шевченко ©   (12.03.07 13:43) [190]
Могу я это понимать как утверждение, что только VCL понятна и легкоизучаема?


 
Игорь Шевченко ©   (2007-03-12 14:13) [193]

euru ©   (12.03.07 14:05) [192]

Нет, почему же. Могу еще RxLib привести в качестве легко понятной и изучаемой библиотеки. Но, к сожалению, непонятного кода намного больше.


 
Kolan ©   (2007-03-12 14:17) [194]

Раз тут про хелперы... Вот я крутил Delphi for Don net. Там такая штука кидаешь допустем ToolTip и он появляется на всех контролах. Это тоже с пом хелперов сделано? А как? Пробовал - неполучилось...

Забавно наверно былобы в дизайн тайме, добавля новые хелперы, "набирать" нужную функциональность, как на детской пирамидке...


 
euru ©   (2007-03-12 14:30) [195]


> Игорь Шевченко ©   (12.03.07 14:13) [193]
Т.е. можно утверждать, что сторонние разработчики также способны создавать понятный код, требующий минимального усилия для его изучения?


> Но, к сожалению, непонятного кода намного больше.
К сожалению, любых вещей, создаваемых дилетантами, всегда намного больше.


 
Игорь Шевченко ©   (2007-03-12 14:37) [196]

euru ©   (12.03.07 14:30) [195]


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


Безусловно.


> К сожалению, любых вещей, создаваемых дилетантами, всегда
> намного больше.


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

"Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, - недооценка изобретательности клинических идиотов." (c) Дуглас Адамс - "Путеводитель для путешествующих по галакатике автостопом"


 
euru ©   (2007-03-12 15:00) [197]


> Игорь Шевченко ©   (12.03.07 14:37) [196]
А раз имеются разработчики, пишущие понятный код без хелперов, почему же тогда не может быть разработчиков, которые могут писать понятный код с использованием хелперов?


> К сожалению, я зарабатываю на хлеб, взаимодействуя с кодом,
>  написанным в том числе и дилетантами.
Но ведь не у всех входит в обязанности изучать такой код. Остальным-то зачем отказываться от профессионально написанных библиотек, в которых используются хелперы.


> "Классическая ошибка, которую совершают проектировщики абсолютно
> надежных систем, - недооценка изобретательности клинических
> идиотов."
Введение новой сущности (при правильном её использовании) не делает систему ни абсолютно надёжной, ни абсолютно ненадёжной. Существование клинических идиотов также не зависит от отсутствия или наличие этих сущностей.


 
Игорь Шевченко ©   (2007-03-12 15:04) [198]

euru ©   (12.03.07 15:00) [197]


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


Я вообще-то высказал свое мнение, исходя из собственных реалий.

Тут народ периодически высказывает мнение о вреде макросов, множественного наследования, оператора goto, мотивируя тем, что код, дескать, непонятный получается.

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

Однако отчего ж народ высказывает негативное мнение ?


 
euru ©   (2007-03-12 15:25) [199]


> Игорь Шевченко ©   (12.03.07 15:04) [198]
> Однако отчего ж народ высказывает негативное мнение ?
Чаще всего потому что это популярное мнение. Либо изначально не разобрался в его правильном применении, получил негативный опыт, выработал негативный условный рефлекс.

Ни один из перечисленных примеров у меня не вызывает негатива. Как там про овощ, место и пользу? :)


 
Игорь Шевченко ©   (2007-03-12 15:46) [200]

euru ©   (12.03.07 15:25) [199]

Про овощ все хорошо. Собственно, иллюстрация овоща не ко времени и была в примерах с Memo.Lines.DoWork

А при скрещивании System.Object и TObject helper"ы, как и овощи вполне себе приносят пользу.



Страницы: 1 2 3 4 5 6 7 вся ветка

Форум: "Прочее";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.84 MB
Время: 0.075 c
2-1175556479
Alll
2007-04-03 03:27
2007.04.22
Циклы


15-1174896516
Нулевой
2007-03-26 12:08
2007.04.22
Кто такой?


2-1175695555
Magedon
2007-04-04 18:05
2007.04.22
Как добавить свой пункт в контекстное меню Ворда?


1-1172204678
Мстилели
2007-02-23 07:24
2007.04.22
Unicode


15-1175239220
Ketmar
2007-03-30 11:20
2007.04.22
не дали пообщаться...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский