PDA

Просмотр полной версии : "Шедевры" программерской мысли



Хыиуду
12.01.2007, 19:46
Тсзать, фольклор. Куски кода, при взгляде на которые слезы наворачиваются. Собираем вместе!

На создание темы вдохновило сообщение Игоря Акопяна вот здесь (http://forum.developing.ru/showthread.php?t=7583):
Программистский шедевр на индусском форуме на тему "как узнать завтрашнюю дату" остался непревзойденным:
void get_tomorrow_date( struct timeval *date )
(
sleep( 86400 ); // 60 * 60 * 24
gettimeofday( date, 0 );
)

А вот еще один: человеку нужно было узнать, содержит ли булевская переменная b значение TRUE. Как бы вы это сделали? if b then ... . На худой конец if b=TRUE then... . Угадайте, что сделал этот деятель?
if length(str(b))<5 then...

Absurd
12.01.2007, 19:53
Кто-то попытался сэкономить на проверке счетчика, но не знал что раскручивание стека происходит на два порядка медленнее:


try {
int i = 0;
while (true) {
Object o = arr[i++];
}
} catch (ArrayOutOfBoundsException e) {}

Absurd
12.01.2007, 20:10
Еще я как-то офигел, когда поставил брейкпоинт на чужой метод: на нем сидел тред-вотчдог, который замерял время работы функции, и если через время X из функции не был совершен выход, то этот метод запускался снова в контексте другого треда. Я изменил идентификаторы в оригинальном коде с хрен знает какого языка на на английский.

типа так:


void superPupelMegaRobustMethod() {
Thread watchdog = new WatchdogThread().start();
...
watchdog.stop();
}

..
void run() { // watchdog loop
boolean timeElapsed = false;
while(true) {
if (timeElapsed) () {
new Thread() {
....
superPupelMegaRobustMethod();
.....
}.start();
}
Thread.sleep(1000);
timeElapsed = true;
}
}

Хыиуду
15.01.2007, 17:05
Кусок кода программера-мьянмийца (Мьянма - это бывшая Бирма):


procedure a1;
....
procedure a2;
....
procedure a3;
....
var i:byte;
begin
....
for i:=1 to 3 do
begin
if i=1 then a1;
if i=2 then a2;
if i=3 then a3;
end;
end.

Это новый подход к последовательным вычислениям!

Игорь Акопян
26.10.2007, 14:36
ха! мъянмы... индусы.... вот тока что узрел на sources.ru
совет как исключить закрытие основной формы по ESC при закрытии модальной:
ввести глобальный флаг и проверять


procedure TForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if CLOSED then
CanClose := CLOSED
else
CanClose := CLOSED;
end;

Хыиуду
30.10.2007, 15:34
Что-то подобное видел недавно:
try:
aaa()
except:
aaa()

Oscar
02.11.2007, 17:07
нашел в коде своего проэкта (при помощи FindBugs (http://findbugs.sourceforge.net/)):


if (clusters != null) {
return result;
}

//Add all clusters
for(Cluster cluster : clusters) {

P.S. Этот кусок кода писал не я )) честно! :-D

Хыиуду
12.11.2007, 12:52
Нашел в одном из своих проектов:
function have_sex($user);
function get_sex($sex);
а функции всего-то определяли, задан ли в записи БД о пользователе его пол, и преобразовывал чары 'M', 'm', 'F', 'f' в "Мужской" и "Женский" соответственно.

somewhere
12.11.2007, 13:31
По-хорошему Get_Sex() должна иметь другой параметр либо содержать рекурентные вызовы )))))))) и по-больше, по-больше...))))

Хыиуду
12.11.2007, 18:07
Ага, ага, помню секс на Ассемблере:
PUSH AX
POP AX

Хыиуду
14.11.2007, 17:24
Кусок кода на Перле, который очень напоминает музыку из мультика "Розовая Пантера"
my @param = $r->param();
my %param;
foreach my $param (@param)
{ $param{$param} = $r->param($param);
}

Хыиуду
10.01.2009, 16:37
Bool IsNumber (string str) {
return (str.Replace ("0", "").Replace ("1", "").Replace ("2", "").Replace ("3", "").Replace ("4", "").Replace ("5", "").Replace ("6", "").Replace ("7", "").Replace ("8", "").Replace ("9", "").Length == 0);
}

BBB
11.01.2009, 09:51
Bool IsNumber (string str) {
return (str.Replace ("0", "").Replace ("1", "").Replace ("2", "").Replace ("3", "").Replace ("4", "").Replace ("5", "").Replace ("6", "").Replace ("7", "").Replace ("8", "").Replace ("9", "").Length == 0);
} Будете смеятся (а, может, не будете), но на PL/SQL именно так и проверяется.

function IsInteger (pValue in varchar2) return boolean
is
begin
return (translate (pValue,'$1234567890','$') is null);
end; -- IsInteger

Вот, я даже одну из ссылок, где нашел "первоисточник", сохранил:
http://www.sql.ru/forum/actualthread.aspx?tid=385100

atavin-ta
09.02.2009, 13:13
PUSH AX
POP AX
Это вместо двух NOPов наверное. А как вам такая DOS оболочка:


1 cls
2 open #3, "progs.#": input #3,n: pn$(n): for i=1 to n step 1:
3 input #3,pn(i): print pn(i), :next i
4 input n: merge pn(n)+".b":goto 20
?
Особенно обратите внимание на конец 2-ой строки. Для чего по вашему там двоеточие?
И нафига вводить числовой номер программы, если список программ уже валяется на экране? И ко всему прочему надо было отдельно вручную сформировать файл с именами программ и сохранить его на диске.

Albor
28.03.2009, 21:45
Шедевр от Microsoft. Что может подумать нормальный человек о функции, представленной таким прототипом?

int CRichEditCtrl::LineLength(int nLine = -1) const;Правильно. Функция возвращает длину строки, номер которой передаётся как параметр. Но, не тут то было. Как оказалось, под именем nLine кроется индекс символа в тексте. Что обидно, за пару дней до использования оной, почитал MSDN и отметил для себя несоответствие, но... вылетело из головы. За что и поплатился - мучил дебаггер, пока не въехал в чём дело.