Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1293449561
сергей2010
2010-12-27 14:32
2011.03.20
Удаление записей из файла


2-1293114081
Павел В.
2010-12-23 17:21
2011.03.20
Относительно BoolToStr


2-1293376363
Godod
2010-12-26 18:12
2011.03.20
Чертеж графика по точке на видео


2-1293300922
makarik01
2010-12-25 21:15
2011.03.20
Помогите с dcpcrypt


15-1291650651
stenfit
2010-12-06 18:50
2011.03.20
сохранение настроек





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский