- 1
- 2
- 3
- 4
- 5
void SomeFunction(SomeClass* cls)
{
std::auto_ptr<SomeClass> tmp(cls);
SomeObject.SomeMethod(tmp.release());
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+52.9
void SomeFunction(SomeClass* cls)
{
std::auto_ptr<SomeClass> tmp(cls);
SomeObject.SomeMethod(tmp.release());
}
несколько раз видел такое в разных вариациях (поэтому вместо копи-пасты - абстракция).
смысл сей конструкции упорно ускользает от меня :)
+52.3
void GAMEPLAYER::cCar::abandonCar(GAMEPLAYER::cPlayer* player){
for(unsigned int i=0;i<size();++i){
cBaseAnimManager * bam = get(i);
if(!bam->isCarRider())
continue;
cCarRider* rdr = (cCarRider*)bam;
if(rdr->gScript()==player->gScript()){
delete rdr;
storage.erase(i);
--i;
}
}
}
НЕ time-critical код из некоторой игры
Наблюдаем:
1) непониманием того, зачем нужно наследование
2) плохо пахнущие имена переменных
+60.3
void CExeTuner::ResFill2Tree(uchar *baddr, uchar *addr, TRes *now, int level)
{
int len;
now->size1=*(uword *)(addr+0x0C); now->size2=*(uword *)(addr+0x0E);
if (now->size1+now->size2) now->mas=new TRes * [(now->size1+now->size2)];
ulong long1,long2;
for (int i=0; i<(now->size1+now->size2); i++)
{
now->mas[i]=new TRes;
now->mas[i]->back=now;
now->mas[i]->name=new char [32];
now->mas[i]->mas=NULL; now->mas[i]->data=NULL;
long1=*(ulong *)(addr+0x10+(i<<3));
long2=*(ulong *)(addr+0x14+(i<<3));
if (long1&0x80000000) {
long1&=0x7FFFFFFF;
now->mas[i]->isname=true;
len=*(uword *)(baddr+long1);
now->mas[i]->rname1=new uchar [len*2+2+1];
now->mas[i]->rname1[len*2+2]=0;
memcpy(now->mas[i]->rname1,baddr+long1,len*2+2);
now->mas[i]->name=new char [len+1];
now->mas[i]->name[len]=0;
for (int j=0; j<=len; j++)
now->mas[i]->name[j]=now->mas[i]->rname1[(j+1)*2];
} else {
now->mas[i]->isname=false;
now->mas[i]->rname2=long1;
if (!ResNumToStr(long1,now->mas[i]->name,level)) _itoa(long1,now->mas[i]->name,10);
}
if (long2&0x80000000) {
long2&=0x7FFFFFFF;
now->mas[i]->isdir=true;
ResFill2Tree(baddr, baddr+long2, now->mas[i], level+1);
} else {
now->mas[i]->isdir=false;
now->mas[i]->size1=*(ulong *)(baddr+long2+4);
now->mas[i]->data=new uchar [now->mas[i]->size1];
if ((*(ulong *)(baddr+long2)+now->mas[i]->size1)>(*ExeMain.ResDirAddrOBJ+*ObjMas[ExeMain.ResPosInObj].size))
{ now->mas[i]->data=NULL; now->mas[i]->size1=0;
} else memcpy(now->mas[i]->data,baddr-*ExeMain.ResDirAddrOBJ+*(ulong *)(baddr+long2),now->mas[i]->size1);
}
}
}
Древнющий проект откопал))
Метод извлекает все ресурсы из PE файла в структуру типа дерево))
+68.9
class imgSeq {
public:
CvSeq* faces;
IplImage* img;
IplImage* small_img;
IplImage* gray;
CvMemStorage* storage;
int id;
imgSeq() {
CvSeq* faces = 0;
IplImage* img = 0;
IplImage* small_img = 0;
IplImage* gray =0 ;
CvMemStorage* storage = 0;
id = -1; //unassigned
};
};
Хотя бы id взаправду инициализирует
+68.6
printf("%s","Для выхода из меню нажмите reset.");
Найдено в глубине системной DOS УтиЛИТКИ, естественно не Microsoft'овской.
+57.9
bool mod_lesser ( int elem1, int elem2 ) {
if (elem1 < 0)
elem1 = - elem1;
if (elem2 < 0)
elem2 = - elem2;
return elem1 < elem2;
}
template <class T>
void printVector(const vector<T> &vec);
int _tmain(int argc, _TCHAR* argv[])
{
ostream_iterator <int> output (cout, " ");
vector <int> v1;
vector <int> v2;
vector <int> v3;
int x=0, i=0;
vector<int>::iterator endLocation;
do
{
cout << "Vvedite " << i << "element mnozhestva A: ";
cin >> x;
if (x!=-99999)
{
v1.push_back(x);
i++;
}
else break;
}
while (x!=99999);
i=0; x=0;
do
{
cout << "Vvedite " << i << "element mnozhestva B: ";
cin >> x;
if (x!=-99999)
{
v2.push_back(x);
i++;
}
else break;
}
while (x!=99999);
i=0; x=0;
do
{
cout << "Vvedite " << i << "element mnozhestva C: ";
cin >> x;
if (x!=-99999)
{
v3.push_back(x);
i++;
}
else break;
}
while (x!=99999);
cout << "A = { ";
printVector (v1);
cout << "}";
cout << '\n';
cout << "B = { ";
printVector (v2);
cout << "}";
cout << '\n';
cout << "C = { ";
printVector (v3);
//Выполнение операции A U B
cout << "}";
vector <int> results (v1.size()+v2.size());
cout << '\n';
sort (v1.begin(), v1.end(), mod_lesser);
sort (v2.begin(), v2.end(), mod_lesser);
sort (v3.begin(), v3.end(), mod_lesser);
merge (v1.begin(), v1.end(), v2.begin(), v2.end(), results.begin());
endLocation=unique (results.begin(), results.end());
cout << "A U B = {";
copy (results.begin(), endLocation, output);
cout << "}";
cout << '\n';
sort (results.begin(), results.end(), mod_lesser);
unique (v3.begin(), v3.end());
cout << "(A U B)\\C = {";
set_difference (results.begin(), results.end(), v3.begin(), v3.end(), output);
cout << "}";
cout << '\n';
system ("pause");
return 0;
}
Вот такие крутые программисты сидят в контакте. Особенно радуют три повторяющихся куска кода для ввода вектора и переменная i, единственное предназначение которой - зачем-то плюсоваться в цикле.
+51.7
#define volatile_cast reinterpret_cast
Это кому-то нужно? Зачем? И работает разве? Найденно на просторах Интернета.
+61.1
void funcMir()
{
...
if ( __mir0>5 )
goto vihod;
TMir1 __mir1; // Конструктор не вызывается. (Оператор goto перескакивает через него.)
...
vihod:
...
// Здесь вызывается деструктор для __mir1 при выходе __mir1 из области видимости.
};
Код оригинальный из инета. Комментарии добавил мой друг.
+56.9
cout << "\nVvedit A->"; //организуем ввод коэфициэнтов уравнения с помощью
cin >> a; //ф-й потокового ввода-вывода (cout и cin с библиотеки iostream.h)
cout << "\nVvedit B->";
cin >> b;
cout << "\nVvedit C->";
cin >> c;
d = pow(b,2)-(4*a*c); //найдем дискриминант
if (d < 0) goto d1; //проверяем условия, и, с помощью
if (d==0) goto d2; //меток переходим к соответствующему блоку
if (d>0) goto d3;
d1: { //блок 1: дискриминант < 0
printf("\nKoreniv nema");
goto exit; //безусловный переход на exit
}
d2: { //блок 2: дискриминант=0
x1=-b/(2*a)
printf("\nx = %f",x1);
goto exit; //безусловный переход на exit
}
d3: { //блок 3: дискриминант>0
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
printf("\nx1 = %f",x1);
printf("\nx2 = %f",x2);
goto exit; //безусловный перехід на exit
}
exit:
No comments.
+49.9
bool __fastcall TForm1::ImportFile(AnsiString FName, int Direction)
{
bool StatusUpload;
StatusUpload = true;
TStringList *Inside;
Inside = new TStringList;
Inside->LoadFromFile(FName);
if (Direction == 1)
{
// ...
date_made = StrToSqlDate(Inside->Strings[1]);
ops = Inside->Strings[0];
Inside->Delete(0);
Inside->Delete(0);
Inside->Delete(0);
int Iterations = (Inside->Count/5);
for (int i=0; i<Iterations; i++)
{
AnsiString A, B, C, D, E;
A = Inside->Strings[0].Trim();
B = Inside->Strings[1].Trim();
C = Inside->Strings[2].Trim();
D = Inside->Strings[3].Trim();
E = Inside->Strings[4].Trim();
for (int j=0; j<5;j++)
Inside->Delete(0);
if (A == "1.1.2")
E='1';
if (A == "4.13" || A == "4.13" || A == "4.13")
E='20';
C = RemoveZPT(C);
ADOQuery1->SQL->Text = "INSERT INTO dnevnik_inside (row_id, ops, date_made, code, sign, val, val_init, direction, type) VALUES ("
+ row_id + ", '" + ops + "', '" + date_made + "', '" + A + "', '"
+ B + "', " + C + ", " + C + ", '" + D +"', '"+E+"')";
ADOQuery1->ExecSQL();
}
Trans->CommitRetaining();
}
Собсно, название функции говорит само за себя :)
П.С. Коллега, не обижайся!