Форум: "Прочее";
Текущий архив: 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