Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.014 c
15-1261344620
Юрий
2009-12-21 00:30
2010.03.07
С днем рождения ! 21 декабря 2009 понедельник


2-1262071082
Who_is_you?
2009-12-29 10:18
2010.03.07
Чтение и запись в LPT в режиме Bidirection Win XP, Win98?


2-1262082279
ford
2009-12-29 13:24
2010.03.07
прочитать файл


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


4-1229691321
Ort
2008-12-19 15:55
2010.03.07
Неправильно работает нажатие на клавиши