Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.56 MB
Время: 0.007 c
15-1261322445
oxffff
2009-12-20 18:20
2010.03.07
Сломать палец на ноге на ровном месте не проблема.


8-1180531137
Zeleniy
2007-05-30 17:18
2010.03.07
MediaPlayer и несколько файлов одного расширения.


2-1261998166
citizen
2009-12-28 14:02
2010.03.07
Дескрипторы дочерних окон


15-1261258220
Юрий
2009-12-20 00:30
2010.03.07
С днем рождения ! 20 декабря 2009 воскресенье


2-1262771765
webpauk
2010-01-06 12:56
2010.03.07
Буфер обмена





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