-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+58
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
private function _getOrderBy($orderField)
{
switch ($orderField)
{
case 'ProductID':
return 'ProductID';
case 'ProductName':
return 'ProductName';
case 'Per':
return 'Per';
case 'Start':
return 'Start';
case 'Qty':
return 'Qty';
case 'OrderDetailsID':
return 'OrderDetailsID';
case 'FIOUr':
return 'FIOUr';
case 'AddressUr':
return 'AddressUr';
case 'ZipCodeUr':
return 'ZipCodeUr';
case 'OrderRealSupID':
return 'OrderRealSupID';
case 'PayDate':
return 'PayDate';
case 'SumPay':
return 'SumPay';
case 'NumPlPor':
return 'NumPlPor';
default:
return 'OrderID';
}
}
//Вот еще чуть-чуть:
private function _getOrderType($orderType)
{
switch ($orderType)
{
case 'asc':
return 'asc';
default:
return 'desc';
}
}
Ну в общем, привожу пару этюдов из "коричневой" симфонии, которые используются для формирования SQL запроса. Код - прост, но говнист.
SunnyMagadan,
17 Декабря 2012
-
−90
- 1
- 2
- 3
- 4
- 5
def getEML(self):
for i in self.__mandatory_headers:
if i not in self.__headers:
return None
return '{}\r\n\r\n{}'.format('\r\n'.join(['{}: {}'.format(k, v) for k, v in self.__headers.iteritems()]), self.__body)
Наверное, надо подумать, как переписать в виде лямбды для пущего эффекта
Miketsukami,
12 Декабря 2012
-
−119
- 1
- 2
- 3
- 4
- 5
- 6
ВЫБРАТЬ
ЕСТЬNULL(СрокПолезногоИспользования, 0) КАК СрокПолезногоИспользования
ИЗ
РегистрСведений.РасчетАмортизацииОС.СрезПоследних
ГДЕ
ОС = &ОсновноеСредство
Типовая конфигурация. Там такой запрос используют в печатной форме Основных средств... Думает по 10-15 минут
2 глупых ошибки:
1. Проверка на NULL, в данном случае его быть не может (хотя это особо ни на что не влияет)
2. Условие по законам 1С должно применяться в РегистрСведений.РасчетАмортизацииОС.Срез Последних(,ОС = &ОсновноеСредство), иначе сильно падает скорость выполнения.
ok0504,
29 Ноября 2012
-
+120
- 1
- 2
- 3
- 4
- 5
- 6
<style>
.pitalic {
font-style:italic;
}
</style>
<p class = 'pitalic'>блаблабла</p>
прям новый супергерой...
Snickers,
25 Ноября 2012
-
+137
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
/* ... */
HWND mywnd = NULL;
/* ... */
#ifdef WIN32
mywnd = GetForegroundWindow();
if(GetWindowLong(mywnd, GWL_WNDPROC)) {
for(i = 1; i < argc; i++) {
if(verbose_options(argv[i]) < 0) break;
switch(argv[i][1]) {
case 'f': i++; break;
case 'F': i++; break;
case 'L': i++; break;
case 'a': i++; break;
default: break;
}
}
if(i > argc) i = argc;
i = 3 - (argc - i);
if(i > 0) {
fprintf(stderr,
"- GUI mode activated, remember that the tool works also from command-line\n"
" where are available various options like folder scanning, filters and so on\n"
"\n");
/* дальше пляски с извлечением параметров из argv */
}
}
#endif
Наткнулся на утилиту, которая умеет отличать запуск из гуев и из консоли. Полез глядеть, как сделано, а там вот такие чудеса.
PascalGovno,
20 Ноября 2012
-
+9
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
class A
{
public:
A () : p (new SomeType)
{
assert ("It must be non-zero" && p);
}
~A ()
{
Box <SomeType> deleter (p);
p = 0;
}
private:
SomeType *p;
};
А вот и применение класса Box
Setry,
19 Ноября 2012
-
+49
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
if($model->validate(array('code')))
{
$model->addError('code', 'Введен неверный код купона. Купон с таким кодом уже существует.');
}
else
{
if($model->save())
{
$this->redirect(array('view','id'=>$model->id));
}
}
sleeper,
12 Ноября 2012
-
+55
- 1
- 2
- 3
- 4
if (trim((string) $_GET['tag'])) {
$current = $conn->fetchAll("SELECT LOWER('" . (string) $_GET['tag'] . "') as `tag`");
$current = $current[0]['tag'];
}
UnnamedUser,
09 Ноября 2012
-
+16
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
QString QSqlResultPrivate::positionalToNamedBinding()
{
int n = sql.size();
QString result;
result.reserve(n * 5 / 4);
bool inQuote = false;
int count = 0;
for (int i = 0; i < n; ++i) {
QChar ch = sql.at(i);
if (ch == QLatin1Char('?') && !inQuote) {
result += qFieldSerial(count++);
} else {
if (ch == QLatin1Char('\''))
inQuote = !inQuote;
result += ch;
}
}
result.squeeze();
return result;
}
// Пример запроса:
// select * from some where d_t = "2012-11-08 12:00:00"
Словили сегодня вот такой глюк в кутишечке.
База данных отлично понимает строки и даты в двойных кавычках, все это даже работало какое-то время. Но когда попытались исполнить запрос с таймштампом в двойных кавычках (как в строке 25), начала возникать ошибка в духе "непонятные символы в дате". В одинарных же кавычках все работало. После копания в исходниках и гуглёжки выяснилась и причина - QtSql в упор не видит двойных кавычек, и пытается проставить в них именованные параметры (в нашем случае :00, :00)...
Если кому нужен быстрофикс - берем тут: https://bugreports.qt-project.org/browse/QTBUG-27159
bormand,
08 Ноября 2012
-
+16
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
void keyStart(int key,void (*func)())
{
while(SDL_PollEvent(&keyEvent))
{
switch(keyEvent.type)
{
case SDL_KEYDOWN:
switch(keyEvent.key.keysym.sym)
{
/*Выход*/
case SDLK_ESCAPE:
func();
break;
case SDLK_w:
func();
break;
case SDLK_q:
func();
break;
default:
break;
}
break;
default:
break;
}
}
}
Функция высшего порядка, мужики. Сами знаете откуда.
LispGovno,
06 Ноября 2012