Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Вниз

Ужасный код   Найти похожие ветки 

 
TDelphi ©   (2009-10-22 09:29) [0]

Ну бывает-же такое....

Взято с одного форума :

function IsTrue(Value: boolean): boolean;
begin
 if Value <> true then result := false
 else if Value <> false then result := true
 else // внимание!
   result := (not true) and (not false);
end;


 
TBuilder   (2009-10-22 09:35) [1]

fake


 
Skyle ©   (2009-10-22 09:37) [2]

Такого много
http://govnokod.ru/


 
KSergey ©   (2009-10-22 09:39) [3]

Учитывая, что boolean - это все же байт, т.е. в машинном коде он может принимать любое из 256 доступных байту значения - быть может, эту функцию кто-то использовал для однозначного перевода некоего байта в значение boolean, котрое только 2 значения должно принимать.
Хотя, конечно, некрасиво это сделано с точки зрения чибабельности и правильности, но как вариант.

Ну а строка
result := (not true) and (not false);
возможно говорит просто о ч.ю.


 
DVM ©   (2009-10-22 09:43) [4]


>
> TDelphi ©   (22.10.09 09:29)
>
> Ну бывает-же такое....

Это шутка чья то, неужели не понятно.


 
Плохиш ©   (2009-10-22 10:00) [5]

Этот бойян здеся кажный год вываливают...


 
test ©   (2009-10-22 10:07) [6]

Skyle ©   (22.10.09 09:37) [2]
Опередил

TDelphi ©   (22.10.09 09:29)  

Тоже боян, в копилку индусы пишут на Java.
void someFunc(boolean value){
...
if(String.valueOf(value).Length() == 4){

}else{
...
}
...
}


 
TDelphi ©   (2009-10-22 10:16) [7]

Ну а это просто убило )))))))))))))

function IntToMonth(NumberMonth: Integer): string;
begin
 сase NumberMonth of
   1: Result := "Январь";
   2: Result := "Февраль";
   3: Result := "Март";
   4: Result := "Апрель";
   5: Result := "Май";
   6: Result := "Июнь";
   7: Result := "Июль";
   8: Result := "Август";
   9: Result := "Сентябрь";
   10: Result := "Октябрь";
   11: Result := "Ноябрь";
   12: Result := "Декабрь";
 else
   Result := "Август";
 end;
end;


 
oxffff ©   (2009-10-22 10:19) [8]


> TDelphi ©   (22.10.09 10:16) [7]


А почему убило?


 
McSimm ©   (2009-10-22 10:22) [9]

http://delphimaster.net/view/3-1186251555/


 
TDelphi ©   (2009-10-22 10:26) [10]

Для этого есть LongMonthNames[Num]


 
Сергей М. ©   (2009-10-22 10:33) [11]


> почему убило?


Потому что по здравой логике д.б. быть

else
  Result := "Нулябрь";

))


 
кц   (2009-10-22 10:36) [12]

else
 raise Exception.Create("Приколись, чувак, мы на Марсе!");


 
KSergey ©   (2009-10-22 10:40) [13]

> TDelphi ©   (22.10.09 10:26) [10]
> Для этого есть LongMonthNames[Num]

Где названия по-русски, ага. Да еще и индекс контроллируется. Или не контроллируется при непредсказуемых последствиях.
LongMonthNames не эквивалентно. Другое дело эффективность указанного решения.


 
oxffff ©   (2009-10-22 10:45) [14]


> TDelphi ©   (22.10.09 10:26) [10]


Твое решение не полно. Как насчет решения вне диапазона  1..12.

И далее
Использование константных строк может дать свои преимущества.

Например сравни надуманный пример

const ArrayA:array[1..12] of string=("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябр ь","Октябрь","Ноябрь","Декабрь");

procedure TForm2.FormCreate(Sender: TObject);
var a:string;
   i:integer;
   b,c:dword;

const ArrayA:array[1..12] of string=("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябр ь","Октябрь","Ноябрь","Декабрь");
begin
b:=GetTickCount;
for I := 0 to 30000000 do a:=ArrayA[1];
b:=GetTickCount-b;
c:=GetTickCount;
for I := 0 to 30000000 do a:=LongMonthNames[1];
c:=GetTickCount-c;
showmessage(inttostr(b)+"  "+inttostr(c));
end;

Первоклассный программист должен об этом знать.


 
oxffff ©   (2009-10-22 10:46) [15]


> Другое дело эффективность указанного решения.


см. [14]


 
TDelphi ©   (2009-10-22 10:46) [16]

The LongMonthNames variable provides an array of full string names of the months of the year. Since it is an array, you can update the default values (set by the Windows locale), but this is not advised. Related commands


 
oxffff ©   (2009-10-22 10:50) [17]


> Сергей М. ©   (22.10.09 10:33) [11]
>
> > почему убило?
>
>
> Потому что по здравой логике д.б. быть
>
> else
>   Result := "Нулябрь";
>
> ))


:). Тогда уж внеябрь.

Здесь кстати это условие либо стеб, либо такие значения трактуются по особому(такое кстати не запрещено).


 
Медвежонок Пятачок ©   (2009-10-22 10:56) [18]

form1.Query1.Active:=true;
....
if form1.DBText1.Caption="1" then
....


 
TDelphi ©   (2009-10-22 11:06) [19]

to
>KSergey ©
>oxffff ©

Объясните какие могут быть задачи вне диапазона 1..12 ?

Может я что-то не понимаю? Ну пусть даже 0..11 :)


 
Anatoly Podgoretsky ©   (2009-10-22 11:12) [20]

> KSergey  (22.10.2009 10:40:13)  [13]

Решение довольно эффективно, там же case, а смеяться на слове else ...


 
Anatoly Podgoretsky ©   (2009-10-22 11:14) [21]

> TDelphi  (22.10.2009 10:46:16)  [16]

А это ты к чему написал?
Нафига мне немецкие названия?


 
oxffff ©   (2009-10-22 11:16) [22]


> TDelphi ©   (22.10.09 11:06) [19]


Например берут разность двух дат. Если разность вне 1..12, то бабки должны вернуть в августе(может у длительных должников бабки только в августе появляются.).


 
KSergey ©   (2009-10-22 11:17) [23]

> Anatoly Podgoretsky ©   (22.10.09 11:12) [20]
> а смеяться на слове else ...

Ну а что? кризисный месяц. Логично.


 
RWolf ©   (2009-10-22 11:36) [24]

может статься, что вот из-за этого кода он и кризисный :)


 
Anatoly Podgoretsky ©   (2009-10-22 11:37) [25]

> KSergey  (22.10.2009 11:17:23)  [23]

В августе столько дел натворили, одним больше, одним меньше уже ситуацию не изменят.


 
Дмитрий С ©   (2009-10-22 11:50) [26]

Путина где-то в августе:)


 
clickmaker ©   (2009-10-22 12:36) [27]

> Ужасный код

public static string PreparePhoneForSearch(string str)
{
StringBuilder retVal = new StringBuilder(str);
retVal.Replace(" ", "");
retVal.Replace("-", "");
retVal.Replace("(", "");
retVal.Replace(")", "");
retVal.Replace("+", "");
retVal.Replace(".", ""); // как можно быть такими долбоёбами...
return retVal.ToString();
}


 
KSergey ©   (2009-10-22 14:20) [28]

> clickmaker ©   (22.10.09 12:36) [27]

:)
не сразу въехал


 
Наиль ©   (2009-10-22 21:52) [29]


> result := (not true) and (not false);

В одной очень древней статье рекомендовалось добавлять такие строки в код, чтобы доказать авторство, если он достанется кому-то другому.
Якобы в больших проектах подобное могут не заметить и не вычистить, а значит можно использовать знания о таких особеностях кода для доказательства собственого авторства.


 
TDelphi ©   (2009-10-23 07:00) [30]

>Anatoly Podgoretsky ©

>А это ты к чему написал?
>Нафига мне немецкие названия?

Какие немецкие? Данный массив вернёт название месяца согласно
локализации Windows.

> oxffff ©

>Например берут разность двух дат. Если разность вне 1..12, то бабки >должны вернуть в августе(может у длительных должников бабки только в >августе появляются.).

Так речь не идёт про :

else
  Result := "Август";

Про сам подход. И почему-то все сразу про диапазон ... Ну а так, чем плохо :

function GetMonth (const Num: Integer): string;
begin
 if Num in [1..12] then Result := LongMonthNames [Num]
                        else Result := LongMonthNames [8]; // Марбр :)
end;

А про принудительную локализацию в справке написано, я уже про это писал см . [16]


 
oxffff ©   (2009-10-23 07:50) [31]


> TDelphi ©   (23.10.09 07:00) [30


Я приводил пример со скоростью. Выигрышь для константных строк у меня более в 3 раза. Поэтому у  того кода, есть также и приимущества, кроме указанных тобою недостатков(отсутствие унификации, и повторная используемость кода).
Я не пытаюсь сделать выводы, о качествах того программиста который написал такой код. Мне лично по этому коду однозначный ответ дать сложно. Обвинять очень просто, а понять гораздо сложнее. :)


 
Anatoly Podgoretsky ©   (2009-10-23 14:03) [32]

> TDelphi  (23.10.2009 07:00:30)  [30]

Вот вот, у меня Немецкая Виндоус, а названия нужны на Русском.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.006 c
2-1257241912
Serge
2009-11-03 12:51
2009.12.20
Как сделать перенос текста в заголовке ListView?


2-1257151733
kyn66
2009-11-02 11:48
2009.12.20
Периодический опрос во время работы программы.


2-1256993435
Keba
2009-10-31 15:50
2009.12.20
Границы родительской формы для MDI


1-1228851112
Tack
2008-12-09 22:31
2009.12.20
Как открыть длинный URL в браузере?


2-1257241538
EH
2009-11-03 12:45
2009.12.20
Поиск и замена в Excel





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