- 1
- 2
- 3
#include <math.h>
...
result = (thisCos ? cos : sin)(3.140);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+73.7
#include <math.h>
...
result = (thisCos ? cos : sin)(3.140);
Знакомый программист прислал из своего проекта.
+65.9
//какой-то .h-файл
namespace Error {
struct Put_error{
const char * Message;
Put_error(const char * e) { Message = e; }
};
...
//в каком-то методе в другом файле
string msg = "Error: cannot open input file " + string(fileInputName) + "\n";
throw Error::Put_error(msg.c_str());
+69.8
vector<int> :: iterator itBegins = array.begin();
vector<int> :: iterator itEnds = array.end();
while(itBegins != itEnds)
{
pVec.pop_back();
it++;
}
Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?
(исправленная версия XD )
+48.5
while(!pVec.empty())
{
pVec.pop_back();
}
Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?
+50.7
namespace inter {
template<typename X>
struct tplClass {
private:
X _priv;
public:
tplClass(const X _generator) {
this->_priv = _generator;
return;
}
tplClass(const tplClass<int>& _a) {
this->_priv = _a.get();
return;
}
const X get(void) const {
return this->_priv;
}
};
template<typename X>
const tplClass<X> operator+(const tplClass<X>& _lha, const tplClass<X>& _rha) {
return tplClass<X>(_lha.get()+_rha.get());
}
}
int main(int argc, char* args[], char* envs[]) {
tplClass<int> a(5);
tplClass<double> b(3.1);
tplClass<double> c = a + b;
return 0;
}
1. Всё упрощено до невозможности. Описано только то, что необходимо для узрения говнокода.
2. Несмотря на то, что решение существует в очень известной книжке, я напоролся на говнокод лично, пока программу писал. Искал несколько дней проблему... Ну да... Бывает...
3. Говнокод заключается в том, что данный код не компилируется.
P.S. Если видите, что где-то есть дыра, то говорите, возможно я опечатался (злобная администрация исправить не даст), возможно в данном коде плюг опущен, возможно дыра у меня в голове. Конструктивная критика приветствуется.
P.P.S. Если вы решили просто написать, что (C++ == "говно") is true , то, пожалуйста, прошу вас как людей порядочных и воспитанных, имеющих совесть и ум, пройдите мимо. Если у вас нит ни ума, ни совести, ни порядочности, то можете писать про "естественную говнистость" C++, милости прошу.
+66.8
// Найдено глубоко в продакшн-коде некоего транслятора:
HRESULT hr = S_OK;
try {
hr = ParseSection(sourceTemplate, output, CS_IF);
}
CATCH_CG_EXCEPTION(this, hr)
CATCH_CG_EXCEPTION_END
// далее смотрим определения этих чудо-макросов
#define CATCH_CG_EXCEPTION(gen, hr) \
catch (CHierCGException* e) { \
(gen)->WriteExceptionMessage(e); \
if (e->m_bContinue) { \
if (e->m_useHRESULT) hr = e->m_hResult; else hr = E_FAIL; \
} \
delete e; \
if (!(e->m_bContinue))
#define CATCH_CG_EXCEPTION_END \
throw; \
}
Исключительно говнистая обработка исключений :-)
+68
char *GetNumRenderedObjectsString() { char *mString = new char [128]; itoa (mNumRenderedObjects, mString, 10); return mString; };
char *GetNumDiscardedObjectsString() { char *mString = new char [128]; itoa (mNumDiscardedObjects, mString, 10); return mString; };
Отличная работа с памятью.
+66.7
mNewFrame->SetName (new char [MAX_TOKEN]);
strcpy (mNewFrame->GetName(), mXFrame->Attribute("name"));
Умелая работа со строками....
+56.3
bool a,b;
...
if(a>b)
{
...
Увидел в одной либе... Си++ странный язык. Паскаль проще...
1)Скомпилируеться ли?
2)Что это значит?
+61.8
const int size=8;
class Bin
{
public:
Bin();
private:
char first[size];
char second[size];
};
Bin::Bin()
{
for (int s=0;s<=size;s++, first[s]='0');
}
Вот вам смешно? А я пару часов думал почему при заполнении одного вектора меняется другой...