Форум: "Начинающим";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];
ВнизОтносительно BoolToStr Найти похожие ветки
← →
Павел В. (2010-12-23 17:21) [0]Сегодня прочитал тему http://www.programmersforum.ru/showthread.php?t=38467, в которой на примере BoolToStr сказано, что создатели VCL - дилетанты. С виду, они правы, можно сделать намного проще. Но, с другой стороны, создатели тоже не дураки и для чего-то написали именно так.
Мой вопрос простой: скажите, кто прав? :) И почему действительно написано именно так?
← →
Плохиш © (2010-12-23 17:29) [1]
> сказано, что создатели VCL - дилетанты
Зачем сюда всякий бред постить?
← →
Rouse_ © (2010-12-23 17:32) [2]Ну там перлов и так много :)
и в function TryStrToBool(const S: string; out Value: Boolean): Boolean;
Result := CompareWith(TrueBoolStrs);
if Result then
Value := True
← →
Сергей М. © (2010-12-23 17:32) [3]Если бы Борланд при разработке VCL потакала блажи всяких Квэнди, то VCL вообще бы не вышла в свет)
Цитата из "перлов" преподобного Квэнди:
function booltostr(value:boolean;truestr:string="1";falsestr:string="0";errorstr:string=" "):string;
begin
try
if value then
result:=truestr
else
result:=falsestr;
except
result:=errorstr;
end;
end;
Это, спрашивается, что вообще за бредятина с исключением и errstr ?
← →
RWolf © (2010-12-23 17:33) [4]Видимо, этот код писался с прицелом на возможность возврата нескольких вариантов строк, но по какой-то причине его не закончили и остановились на одной строке для True и одной для False;
ну, хотя бы возможность настройки строк оставили, тоже неплохо.
да неважно это совершенно — строки нужны для вывода куда-то, а он и так всегда тормозной.
← →
Ega23 © (2010-12-23 17:36) [5]
> в которой на примере BoolToStr сказано, что создатели VCL
> - дилетанты.
Дилетанты те, кто это сказал, так как они не дружат с формальной логикой.
Если некоторые функции в VCL написаны неверно, то это не означает, что все разработчики дилетантов - VCL-щики
← →
Плохиш © (2010-12-23 17:37) [6]
> function booltostr(value:boolean;truestr:string="1";falsestr:
> string="0";errorstr:string=" "):string;
Вот это и есть бред психопата.
Упрощение кода, так сказать.
← →
KilkennyCat © (2010-12-23 18:05) [7]
> Rouse_ © (23.12.10 17:32) [2]
>
> и в function TryStrToBool(const S: string; out Value: Boolean):
> Boolean;
>
> Result := CompareWith(TrueBoolStrs);
> if Result then
> Value := True
ну это неудачный пример, в таком огрызке это оправдано.
а вот мне где-то в исходниках встречался комментарий типа "мы это добавили, потому что без этого не работает, а почему - не знаем". Если память не изменяет, у TMSSoftware вроде бы.
← →
Павел В. (2010-12-23 18:18) [8]Спасибо всем, было интересно слышать ваше мнение. Ну я, в принципе, тоже так подумал, что если массив есть, то он должен использоваться в несколько ином качестве, нежели сейчас. Это отрывок кода из vcl delphi 7, возможно, в следующих версиях там всё перелопатили.
> Плохиш
, спасибо, за всегда информативные комментарии. Я наивно полагал, что ветка "Для начинающих" предназначена для "бредовых" вопросов. Видимо, цитата "(вспомогательная конференция. если вам трудно понять самим, что вам нужно или есть желание и способности помогать новичкам — вам сюда)" ко мне не относится. Ну да ладно...
← →
Павел В. (2010-12-23 19:25) [9]Кстати, RWolf, массивы-таки объявлены глобально, можно добавлять свои значения к стандартным. Вот что написано в справке по TrueBoolStrs:
> Lists strings that can represent the boolean value true.
>
> Description
>
> TrueBoolStrs is an array of strings that are used in conversions
> between Boolean values and strings. When using the BoolToStr
> function, true values are converted to the first string
> in the list. When using the StrToBool function, any string
> in the list is converted to true.
Получается, не бред вовсе. Хотя согласен, если чем не устроит, можно и свою написать. ...как у Квэнди :D Вот это действительно перл ) Ну что ж, кого что устраивает
← →
Сергей М. © (2010-12-23 19:55) [10]
> Это отрывок кода из vcl
SysUtils со всеми его "бедами" - это не VCL, хотя и используется этой либой.
Полагаю что многие потроха SysUtils переползли туда из более раннего творчества Борланда, когда VCL еще и в планах не было.
← →
Anatoly Podgoretsky © (2010-12-23 21:35) [11]Да нормально написано, а то что некоторые не видят сути и идеи, ну так пусть и вопят дилетанты, Борланду нос утерли.
← →
turbouser © (2010-12-24 01:23) [12]
> Anatoly Podgoretsky © (23.12.10 21:35) [11]
А в чем суть и идея? Сэкономить пару байтов в ресурсах? Закладка на Будущее?
← →
turbouser © (2010-12-24 01:24) [13]
> Сергей М. © (23.12.10 19:55) [10]
Как ни странно, +1.
← →
Anatoly Podgoretsky © (2010-12-24 01:31) [14]Было разумное предположение, что это закладки на Будущее?
Их довольно много, но не все были доведены до логического конца. Тогда остается непонятный код, чего хотел автор?
И этот код как правило остается навсегда, переходя из версии в версию.
И с этой точки зрения код уже выглядит по другому.
← →
turbouser © (2010-12-24 01:35) [15]
> Anatoly Podgoretsky © (24.12.10 01:31) [14]
:) Но ведь аудит, тем более в такой конторе, должен быть. Зачем оставили? "мы не знаем как, но это работает, так шта нугонафик"? Странно.
← →
Германн © (2010-12-24 01:41) [16]
> Но ведь аудит, тем более в такой конторе, должен быть. Зачем
> оставили?
1. Ломать всегда проще, чем строить. А строить соответственно намного сложнее, чем ломать. (Народное - "семь раз подумай, потом отрежь").
2. Если код работает, то не надо его менять без особой на то необходимости.
ИМХО это две аксиомы.
← →
turbouser © (2010-12-24 01:50) [17]
> Германн © (24.12.10 01:41) [16]
>
>
> > Но ведь аудит, тем более в такой конторе, должен быть.
> Зачем
> > оставили?
>
> 1. Ломать всегда проще, чем строить. А строить соответственно
> намного сложнее, чем ломать. (Народное - "семь раз подумай,
> потом отрежь").
> 2. Если код работает, то не надо его менять без особой на
> то необходимости.
> ИМХО это две аксиомы.
1) Аудит - это не ломать. Оптимизация не помешает.
2) Если код работает хреново, то почему бы и не поменять?
в vcl, слава создателю, не пришлось изменений вносить, но вот к сторонним компонентам (dx, fr, eh) - пришлось и не раз.
← →
Германн © (2010-12-24 02:00) [18]
> 1) Аудит - это не ломать. Оптимизация не помешает.
В данном случае - это ломать. Точнее изменять чей-то код х.з. сколько лет назад написанный и х.з. кем. Проще написать новый, но тогда - аксиома №2.
> Если код работает хреново, то почему бы и не поменять?
А он "работает хреново"? Ни на том форуме, ни на этом таких претензий не было.
← →
turbouser © (2010-12-24 02:02) [19]
> Германн © (24.12.10 02:00) [18]
Я с тобой спорить не собираюсь.
Прими как должное.
← →
Германн © (2010-12-24 02:05) [20]
> Я с тобой спорить не собираюсь.
> Прими как должное.
Взаимно.
← →
turbouser © (2010-12-24 02:10) [21]
>
> Германн © (24.12.10 02:05) [20]
>
>
> > Я с тобой спорить не собираюсь.
> > Прими как должное.
>
> Взаимно.
И не сомневался :)
← →
sniknik © (2010-12-24 08:12) [22]> 2) Если код работает хреново, то почему бы и не поменять?
он работает хорошо, именно так как задумывалось, и даже кое где вроде используется (BDE на чем написан?).
не помню уже, и не с BDE связано, но ... в базах/таблицах парадокса вроде можно было писать в гриде F или .F. или False или Нет (локализация) в буленовском поле... вот это оно и есть то зачем так сделано.
т.е. получается "почему бы и не поменять?" основывается не на том, что "работает хреново" (претензий к этому вообще то нет даже в той "обсиральной статье") а на том что автор претензии не смог понять логику (и в справку естественно тоже не заглядывал).
чем то подобное напоминает ветку про юзерский интерфейс который нужно делать так чтобы и дебил бы понял (реальный дебил не желающий ничего знать)... то что такой интерфейс урежет возможностей/функционала любому чуть соображающему пользователю в расчет не берется.
← →
Игорь Шевченко © (2010-12-24 10:50) [23]в VCL/RTL имеются косяки, но что из этого следует ? Да ровным счетом ничего.
BoolToStr/StrToBool реализованы совершенно нормально.
А с тем, что нефиг постить сюда высеры ламерья с других форумов, абсолютно согласен. Местных хватает.
← →
turbouser © (2010-12-24 10:52) [24]
> sniknik © (24.12.10 08:12) [22]
>
Вырвано из контекста. Впрочем, ничего удивительного.
← →
Anatoly Podgoretsky © (2010-12-24 11:21) [25]Вот и здесь, не понимает, но туда же резать все нафиг.
← →
Anatoly Podgoretsky © (2010-12-24 12:19) [26]> Anatoly Podgoretsky (24.12.2010 11:21:25) [25]
Нафиг, нафиг такой волюнтаризм.
← →
Юрий Зотов © (2010-12-24 15:24) [27]1. Мистер Квэнди проявил непонимание азбуки, а именно:
а. Cмысла простейшего кода (пост 1);
б. Блоков try - except (пост 2).
2. Мистер Квэнди проявил незнание истории, а именно того, что функция BoolToStr появилась на много лет раньше, чем параметры с дефолтными значениями.
И человек с такими знаниями пытается критиковать VCL?
Напрасно. Ох, напрасно он это делает (как и многие другие, кстати).
Впрочем, если его целью является вызвать смех, то он ее вполне достиг.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.006 c