Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Внизif Value = True then Найти похожие ветки
← →
StriderMan © (2009-12-22 11:46) [0]Откопал недавно в исходниках FastReport такой кусок:
if Mode = True then
Лично я считаю что это образчик неграмотного и безкультурного кода. За такое в нашем отделе принято посмеиваться и всячески подначивать написавшего. Естественно сосискатель написавшей такое в тесте скорее всего работу не получит. Тем не менее на одном из форумов большинство уверяет что это мол стиль такой, а не говнокод. Что думаете господа мастера? Может я не прав?
← →
Sergey13 © (2009-12-22 11:54) [1]А я давеча на заборе такое видел!!!
О времена! О нравы!
← →
KSergey © (2009-12-22 12:11) [2]иногда зависит от привычек автора или используемых им ранее языков: в некоторых подобное необходимо (типа PHP).
Причем ровно от этого же зависит и ответ на исходный вопрос: говно или не говно
← →
Sha © (2009-12-22 12:15) [3]В генофонде изредка встречается.
← →
Дмитрий С © (2009-12-22 12:24) [4]var
B: Boolean;
begin
B := Boolean(2);
if B then ShowMessage("if B then");
if B = true then ShowMessage("if B = true then");
end;
← →
Sha © (2009-12-22 12:27) [5]> Дмитрий С © (22.12.09 12:24) [4]
> var
> B: Boolean;
> begin
> B := Boolean(2);
За такое - расстрел на месте, как и за это:if Mode = True then
begin
Result := True
end
else begin
Result := False
end;
← →
Ega23 © (2009-12-22 12:28) [6]
> if Mode = True then
а что такое Mode и каков ея тип данных?
← →
StriderMan © (2009-12-22 12:29) [7]
> Дмитрий С © (22.12.09 12:24) [4]
Да, в boolean можно запихать много чего, целый байт! Но за такое вообще бить надо :)
← →
Медвежонок Пятачок © (2009-12-22 12:29) [8]procedure TfrxEngineOptions.SetSilentMode(Mode: Boolean);
begin
if Mode = True then
← →
StriderMan © (2009-12-22 12:30) [9]
> а что такое Mode и каков ея тип данных?procedure TfrxEngineOptions.SetSilentMode(Mode: Boolean);
begin
if Mode = True then
FSilentMode := simSilent
else
FSilentMode := simMessageBoxes;
end;
← →
Piter © (2009-12-22 12:32) [10]Удалено модератором
← →
StriderMan © (2009-12-22 12:38) [11]
> ну ты крут, в популярной компоненте отыскал нарушение стилевых рекомендаций )) Думаю, тема обоснована не возмущением насчет FastReport, а собственной гордостью - мол, какой я крутой, для меня это детская ошибка ))
повеселило :))))
> Если "if Value = True then" это единственная "ошибка" на весь код FastReport, то это практически идеальный компонент.
FastReport"ом я в целом доволен. Тем не менее подобные коды наводят на определенные мысли...
> Со временем приходит осознание, что идеального кода не бывает.
у меня со временем пришло сознание что при коллективной разработке таких вольностей быть не должно категорически
> Для крупных, массовых, коммерческих проектов это еще более актуально.
Для продуктов, продаваемых с исходниками красота кода очень важна
← →
Хитрий Лис (2009-12-22 12:38) [12]
> StriderMan © (22.12.09 11:46)
> Лично я считаю...
Вот давайте на этом и остановимся :) хотя нет... немножко посклочничаем...
> ... что это образчик неграмотного и безкультурного кода.
А в чём, простите, неграмотность и безкультурье?
> За такое в нашем отделе принято посмеиваться и всячески подначивать написавшего.
Потому что, в вашем отделе работают глупые и недалёкие работники :) предположу, что по-молодости...
> Естественно сосискатель написавшей такое в тесте скорее всего работу не получит.
Соискателю повезёт :)
> Тем не менее на одном из форумов большинство уверяет что это мол стиль такой, а не говнокод.
Они правы, потому что они не глупые и не недалёкие :)
> Может я не прав?
Вы неправы.
← →
StriderMan © (2009-12-22 12:42) [13]
> А в чём, простите, неграмотность и безкультурье?
В том что код содержит избыточность. Зачем это? Тогда для надежности можно было написатьif (Mode = true) = true then
> Потому что, в вашем отделе работают глупые и недалёкие работники :) предположу, что по-молодости...
Потому что в нашем отделе занимаются коллективной разработкой и есть определенные правила хорошего тона, которых мы придерживаемся
← →
StriderMan © (2009-12-22 12:43) [14]
> В генофонде изредка встречается.
Нашел только в одном месте в CLX
← →
Sha © (2009-12-22 12:48) [15]> StriderMan © (22.12.09 12:43) [14]
> Нашел только в одном месте в CLX
В D7 таких мест точно больше,
причем есть проверки и на True и на False,
но не скажу, что от этого код плохо читается.
← →
Хитрий Лис (2009-12-22 13:01) [16]
> StriderMan © (22.12.09 12:42) [13]
> > А в чём, простите, неграмотность и безкультурье?
> В том что код содержит избыточность.
Код не содержит избыточности. Но даже если бы и содержал - то какое отношение это имеет к неграмотности и безкультурью ?
А если не секрет, какой продукт разрабатывает ваш коллектив ?
Мне так, чисто для себя, поржать...
← →
Piter © (2009-12-22 13:06) [17]Удалено модератором
← →
Дмитрий Белькевич (2009-12-22 13:11) [18]>Лично я считаю что это образчик неграмотного и безкультурного кода.
Бескультурье ;)
← →
boriskb © (2009-12-22 13:19) [19]> [0] StriderMan © (22.12.09 11:46)
На мой взляд ничего криминального.
Такой факт может очем либо бОльшем сказать, но однозначно ничего не говорит.
Это как плотник забивающий гвоздь с трех ударов, когда "крутые" умеют с одного.
Если ты такого плотника сразу зачислишь в неумехи, то очень можешь ошибиться.
← →
Sha © (2009-12-22 13:20) [20]Человеку свойствинно ошебаться.
← →
Sergey13 © (2009-12-22 13:28) [21]> [19] boriskb © (22.12.09 13:19)
Первоисточники говорят об ином.
"Каб не клин и не мох, так и плотник бы сдох" (с) старинная пословица.
Т.е. гвоздями, крутые плотники вообще могут не пользоваться. А вот необходимость патчей и прочих хотфиксов нашими предками никогда не оспаривалась.
8-)
← →
StriderMan © (2009-12-22 13:50) [22]
> А если не секрет, какой продукт разрабатывает ваш коллектив
Неее, этого я не скажу. Но продукт серьезный. Продается к счастью без исходников :)
> Да чего тут обсуждать. Не знаю сколько автору лет, но предполагаю,
> что < 25
26, и я не бородат :)
> Бескультурье ;)
пардон, да. Увидел свою неграмотность уже после поста.
> Но даже если бы и содержал - то какое отношение это имеет к неграмотности и безкультурью ?
самое прямое.
← →
RWolf © (2009-12-22 13:56) [23]> if Mode = True then
Вовсе не факт, что код, вызывающий эту конструкцию, написан на Delphi, и не передаёт в переменной Mode своё понимание булевой Истины (каковая в разных языках может быть 1, -1, 0xFF и проч.).
Так что — да, неграмотный код.
Правильный способ только один — if Mode then...
Вообще, имхо, сабжевый способ записи, свидетельствует о слабом знании языка и основ булевой алгебры.
← →
StriderMan © (2009-12-22 14:00) [24]ну хорошо, покопался вот в исходниках старых, нашел такое:
if (SomeObj1.SomeSubObject.SomeProp = true) or (SomeObj2.SomeSubObject.SomeProp = false) or (SomeObj3.SomeSubObject.SomeProp = true) then
DoSomething
Это что, тоже нормально?
← →
Alx2 © (2009-12-22 14:02) [25]Мне не нравится такой изврат над булевыми выражениями. Но если того где-то требуют правила оформления кода - нефиг фыркать, имхо. Привычка могла оттуда пойти. А вот в некоторых вузах преподы учат ребят писать в таком стиле - вот это, уже, перебор. Код должен читаться легко. Кому-то стало легче от описанного подхода, кому-то противнее. Кто-то предпочитает держать читателя в курсе дела через "говорящие" имена и короткие методы, что не обязательно требует сравнения с истиной.
Все равно, в итоге победит более способный ритор. Тут не математика :)
В свое время, рекомендации креститься тремя перстами, вместо двух, привели к расколу.
← →
KSergey © (2009-12-22 14:10) [26]> StriderMan © (22.12.09 12:42) [13]
> Потому что в нашем отделе занимаются коллективной разработкой
> и есть определенные правила хорошего тона, которых мы придерживаемся
Молодцы, возьмите пирожок с полочки.
Но один на всех, раз уж вы единый коллектив.
Я не вижу вреда от приведенного кода, хотя и пользы, конечно, тоже.
Разовые случаи его встречания могут объясняться совершенно разными причинами.
Вплоть до того, что в этом месте автор планирует в будущем вместо True написать значение какой-то настройки. Или просто "сроки горели".
← →
StriderMan © (2009-12-22 14:15) [27]
> в будущем вместо True написать значение какой-то настройки. Или просто "сроки горели".
Всем известно что нет ничего более постоянного чем временное.
← →
Rouse_ © (2009-12-22 14:23) [28]реализация кода в виде if B = True then говорит как минимум о не полном предствалении корректной работы с типами переменных. Обычно авторы такого кода используют до кучи итератор I типа DWORD, а потом долго размышляют почему-же всетаки выполняется следующий цикл
for I := 0 to List.Count - 1 do
с учетом чтоList.Count
реально равен нулю.
← →
Думкин © (2009-12-22 14:26) [29]
C:\Program Files\Borland\BDS\4.0\source\Win32\vcl\DdeMan.pas
function TDdeMgr.AllowWildConnect(hszApp: HSZ; hszTopic: HSZ): HDdeData;
var
conns: packed array[0..1] of THSZPair;
begin
Result := 0;
if hszTopic = 0 then Exit;
if AllowConnect(hszApp, hszTopic) = True then
begin
conns[0].hszSvc := FHszApp;
conns[0].hszTopic := hszTopic;
conns[1].hszSvc := 0;
conns[1].hszTopic := 0;
Result := DdeCreateDataHandle(ddeMgr.DdeInstId, @conns,
2 * sizeof(THSZPair), 0, 0, CF_TEXT, 0);
end;
end;
C:\Program Files\Borland\BDS\4.0\source\Win32\vcl\ComCtrls.pas
procedure TToolBar.SetButtonHeight(Value: Integer);
begin
if Value <> FButtonHeight then
begin
FButtonHeight := Value;
if ThemeServices.ThemesEnabled = True then
RecreateWnd;
RecreateButtons;
end;
end;
procedure TToolBar.SetButtonWidth(Value: Integer);
begin
if Value <> FButtonWidth then
begin
FButtonWidth := Value;
if ThemeServices.ThemesEnabled = True then
RecreateWnd;
RecreateButtons;
end;
end;
← →
Rouse_ © (2009-12-22 14:30) [30]
> Думкин © (22.12.09 14:26) [29]
То что часть исходников VCL писали совершенно левые люди и иногда с грубейшими ошибками, всем известно и это как раз абсолютно не говорит о том это правильный подход :)
← →
StriderMan © (2009-12-22 14:36) [31]
> используют до кучи итератор I типа DWORD, а потом долго размышляют почему-же всетаки выполняется следующий цикл
с такими извратами не встречался.
Чаще вижу что-то вродеif (a=b) then
Result := true
else
Result := false;
вместо православногоResult := a = b;
← →
Б (2009-12-22 14:42) [32]А есть ещё и такие перлы:
Function IsTrue(B: boolean): boolean;
begin
If (B = True) then Result:= True
else Result:= False;
End;
← →
Хитрий Лис (2009-12-22 14:42) [33]
> Думкин © (22.12.09 14:26) [29]
Как посмел! Ты же покусился на святое!
Тут раз в три месяца выплывает очередной правдоруб со своими представлениями что хотел сказать автор, на что автору кода обычно дефекабельно...
← →
StriderMan © (2009-12-22 14:55) [34]
> Piter © (22.12.09 13:06) [17]
> Да чего тут обсуждать. Не знаю сколько автору лет, но предполагаю,
> что < 25(Автору > 25) = true
:)
← →
Mystic © (2009-12-22 14:56) [35]Я так иногда пишу. Обычно правда
= False
. И не потому, что не знаю, а потому что мне так больше нравится. Особенно, когда название переменной не содержит явно вопроса (IsFile), как например в этом случае.if Mode then // а что такое Mode??? Вообще, эта строка по английски коробит
if Mode = True then// тут как-то более явно, что Mode это переменная типа Boolean
← →
StriderMan © (2009-12-22 15:02) [36]
> // а что такое Mode??? Вообще, эта строка по английски коробитprocedure TfrxEngineOptions.SetSilentMode(Mode: Boolean);
begin
if Mode = True then
FSilentMode := simSilent
else
FSilentMode := simMessageBoxes;
end;
← →
Alx2 © (2009-12-22 15:04) [37]так и просится вместо mode: boolean переменная типа а-ля TSilentMode
← →
Дмитрий Тимохов (2009-12-22 15:05) [38]не вижу ничего плохого, иногда сам так пишу, когда считаю, что читающему будет понятней.
не вижу ничего зазорного.
← →
Piter © (2009-12-22 15:07) [39]Rouse_ © (22.12.09 14:23) [28]
реализация кода в виде if B = True then говорит как минимум о не полном предствалении корректной работы с типами переменных
... в Delphi. Это да. Но это не говорит о слабом уровне программиста как таковом, он легко мог писать по старой памяти. Например, в PHP писать так "if a then" вообще крайне не рекомендуется, ибо там динамическая типизация.
← →
Ega23 © (2009-12-22 15:13) [40]
function ConvertBooleanValue(const Value : Boolean) : Boolean;
begin
if (Value = True) then
begin
Result := False;
end
else
if (Value = False) then
begin
Result := True;
end
else
raise Exception.Create("Unknown boolean value");
end;
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.006 c