- 1
- 2
- 3
- 4
/**
* Assign
**/
function Assign ($mTplArray, $mTrailer = "")
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+148
/**
* Assign
**/
function Assign ($mTplArray, $mTrailer = "")
Зачем этот комментарий, над каждым методов вообще?!
Будто я не вижу как называется метод класса.
+131
// shipping cost = shipping cost + (3% of order sum)
// but only if order sum <2500!
// Вообще я тебе не завидую, чего уж тут :/
// иди напейся
// улетай на Кубу
// выпей 7 коктейлей куба либре
// и стреляй в фиделя кастро
Комментарии к коду в Webasyst ShopScript. Я понял их смысл через пару дней
+152
Пособие по тому, как не надо писать системы: http://file.qip.ru/file/fsBgpGob/index.html
P.S.: за это заплатили товарищам 200 т.р.
+150
// Блок кэширования
// Директива CASH_STATUS определяет количество секунд хранения кэша
// 0 - кэширование отключено,
$_CONFIG["CASH_STATUS"]=0;
Из конфигурационного файла самописной CMS системы
+151
<?
if (!file_exists("count.txt")) {
$fp = fopen("count.txt","w");
fwrite($fp,0);
fclose($fp);
}
$fp = fopen("count.txt","r");
$count = fread($fp,10);
fclose($fp);
$visitor = $_COOKIE['visitor'];
if (!isset($visitor)) {
setcookie("visitor", "yes");
$count++;
$fp = fopen("count.txt","w");
fwrite($fp,$count);
fclose($fp);
}
$string = strlen($count);
for ($search=0;$search<$string;$search++) {
$digit = substr($count,$search,1);
$count_graphic .= "<img src=\"img/$digit.gif\">";
}
?>
+159
void CXMLParser::Parse(std::map< std::pair<int, int>, int >& link)
{
_di_IXMLNode areaNode = MessageNode->ChildNodes->FindNode( WideString("area") );
if( areaNode )
{
Area.reset( new CAreaPart( areaNode ) );
IXMLNodeList* pointList = areaNode->ChildNodes;
if( pointList )
{
for(int pointIndex=0; pointIndex<pointList->GetCount(); pointIndex++)
{
_di_IXMLNode pointNode = pointList->Get( pointIndex );
int typePoint = -1;
if( pointNode->GetNodeName() == WideString("measuringpoint") )
typePoint = MEASURING;
if( pointNode->GetNodeName() == WideString("accountpoint") )
typePoint = ACCOUNT;
if( pointNode->GetNodeName() == WideString("deliverypoint") )
typePoint = DELIVERY;
switch( typePoint )
{
case MEASURING:
case ACCOUNT:
case DELIVERY:
{
const int pointCode = pointNode->GetAttribute( WideString("code") );
const String pointName = pointNode->GetAttribute( WideString("name") );
IXMLNodeList* channelList = pointNode->ChildNodes;
if( channelList )
{
for(int channelIndex=0; channelIndex<channelList->GetCount(); channelIndex++)
{
_di_IXMLNode channelNode = channelList->Get( channelIndex );
if( channelNode->GetNodeName() == WideString("measuringchannel") )
{
const int channelCode = channelNode->GetAttribute( WideString("code") );
const String channelDesc = channelNode->GetAttribute( WideString("desc") );
IXMLNodeList* periodList = channelNode->ChildNodes;
if( periodList )
{
for(int periodIndex=0; periodIndex<periodList->GetCount(); periodIndex++)
{
_di_IXMLNode periodNode = periodList->Get( periodIndex );
if( periodNode )
{
String str = periodNode->GetAttribute( WideString("start") );
periodNode->GetAttribute( WideString("end") );
TDateTime time;
time = TDateTime( StrToInt( str.SubString( 1, 2 ) ), StrToInt( str.SubString( 3, 2 ) ), 0, 0 );
periodNode->GetAttribute( WideString("summer") );
time = IncMinute( time, 30 );
_di_IXMLNode valueNode = periodNode->ChildNodes->FindNode( WideString("value") );
if( valueNode )
{
const int status = valueNode->GetAttribute( WideString("status") );
const int value = StrToInt( valueNode->Text );
if( RTDBWrite )
{
map< pair<int, int>, int >::iterator i = link.find( make_pair( pointCode, channelCode ) );
if( i!=link.end() )
{
(*RTDBWrite)( Date->DateInterval.first + time, (*i).second, value, status );
}
}
}
}
}
}
}
}
}
}
}
}
}
}
RTDBWrite->Flush();
}
Древний legacy-код на БорландЦэпэпэБыдлере, обнаруживаемый на текущей работе (почти госпредприятие), выглядит в основной своей массе примерно так. Новый код на C# чуть получше, но в целом тоже жуткое мракобесие.
Сил больше нет работать с подобным, увольняюсь и ищу норм работу.
+162
$orders = $DB->Query("INSERT INTO `zcrm_orders` SET
`ORDER_NUMBER` = '09/".str_pad($arEventFields['ORDER_ID'], 6, '0', STR_PAD_LEFT)."',
`DATETIME` = '".$dateOrder."',
`FIO` = '".$arEventFields['ORDER_PROP_7']."',
`NAME_ORGANIZATION` = '".$arEventFields['ORDER_PROP_1']."',
`TELEFON` = '".$arEventFields['ORDER_PROP_4']."',
`TELEFON_MOD` = '".preg_replace('/[^\d]+/','', $arEventFields['ORDER_PROP_4'])."',
`EMAIL` = '".$arEventFields['ORDER_PROP_6']."',
`OPLATA` = '8',
`DOSTAVKA` = '".$_POST["id_dostavka"]."',
`CITY` ='".$arEventFields['NASPUNKT_DOSTAVKA']."',
`PUNKT_DOSTAVKA` = '".$arEventFields['ADRESS_DOSTAVKA']." ".$arEventFields['SKLAD_DOSTAVKA']."',
`DATE_DOSTAVKA` = '".$arEventFields['DATE_DOSTAVKA']."',
`TIME_DOSTAVKA` = '".$arEventFields['TIME_DOSTAVKA']."',
`PRICE_DOSTAVKA` = '".$arEventFields['PRICE_DELIVERY2']."',
`COMMENTS` = '".$arOrder['USER_DESCRIPTION']."' ");
Внимательно смотрим на 10 строчку.
+999
#include <iostream>
#include <algorithm>
#include <stdlib.h>
const size_t MB = 1024*1024;
size_t MOD = 0;
unsigned char uniqueNumber () {
static unsigned char number = 0;
return ++number % MOD;
}
int main(int argc, char** argv) {
if (argc < 3) {
return 1;
}
size_t BLOCK_SIZE = atoi(argv[1]) * MB;
MOD = atoi(argv[2]);
unsigned char* garbage = (unsigned char *) malloc(BLOCK_SIZE);
std::generate_n(garbage, BLOCK_SIZE, uniqueNumber);
std::sort(garbage, garbage + BLOCK_SIZE);
free(garbage);
return 0;
}
http://habrahabr.ru/blogs/cpp/138132/
It makes me cry. Понятно, что это всего лишь демонстрационный пример. Но все таки это не оправдание. Итак, начнем по порядку с самого худшего:
1. Сишные malloc/free вперемешку с STL-алгоритмами. WTF? Зачем?
2. Глобальная переменная? Автор не осилил хотя бы bind? Который, к тому же, уже давно std::bind.
3. Uppercase для локальной переменной.
4. Отступ в джва пробела.
+997
void TexQ::Move()
{
mx = quad.v[0].x;
my = quad.v[0].y;
if(hge->Input_GetKeyState(HGEK_RBUTTON) || hge->Input_KeyDown(HGEK_LBUTTON))
{
hge->Input_GetMousePos(&nx, &ny);
move = true;
sx = GetPositionX();
sy = GetPositionY();
subx = nx - sx;
suby = ny - sy;
if ( abs(subx) > abs(suby) )
{
iter = abs(subx);
ms = subx;
subx = (subx < 0) ? -1.0f : 1.0f;
suby = (suby < 0 ) ? suby/abs(ms) : abs(suby/ms);
}
else
{
iter = abs(suby);
ms = suby;
suby = (suby < 0) ? -1.0f : 1.0f;
subx = (subx < 0 ) ? subx/abs(ms) : abs(subx/ms);
}
}
if (move)
{
if (iter >= shift)
{
iter-=shift;
this->SetPosition(
GetPositionX() + subx * shift,
GetPositionY() + suby * shift);
}
else
{
this->SetPosition(nx , ny);
move = false;
}
}
}
Хреновый из меня математик. Этот метод втыкается в функцию фрейминга. И текстура едет по прямой туда, куда мышью тыкнешь.
Позже узнал, как можно тригонометрией в 5 строк написать такую же )
+153
dData->RowCount++;
for (int i = 0; i < dData->RowCount - 1; i++)
for (int j = 0; j < dData->ColumnCount; j++)
dData->Rows[i]->Cells[j]->Value = dData->Rows[i + 1]->Cells[j]->Value;
Мучил седня DataGridView, при dData->RowCount++ создавалась новая строчка в таблице, но только сверху. Остальное съезжало вниз на 1 ячейку. Я боролся полчаса с этим, пока не объяснил проблему товарищу. он предложил свой вариант всего кода:
dData->Rows->Add();
:DDDD