−29
- 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
calculateSomething(int n){
float* x = new float[n];
/*do smth*/
if ( /*validation*/ ) {
delete[] x;
return;
}
float* y = new float[n];
/*do smth*/
if ( /*validation*/ ) {
delete[] x;
delete[] y;
return;
}
float* z = new float[n];
/*next step*/
if ( /*smth goes wrong*/ ) {
delete[] x;
delete[] y;
delete[] z;
return;
}
/*more calculations with validation*/
delete[] x;
delete[] y;
...
/*more delete[]*/
return;
}
Принципиальная схема говногода, найденного на просторах сети.
interested,
26 Июня 2012
+151.8
- 1
- 2
return DSQR(a.r) + DSQR(a.i);
return fabs(a.r) + fabs(a.i);
Пример говроретурна одной из моих функций в дипломном проекте на Си. Я собрал несколько вариантов программы, комментируя в различных местах различные return такого вида, как сейчас представлено выше.
DSQR() -- это макрос возведения в квадрат из numericalrecepies. Там вся программа на основе "рецептного" кода.
interested,
01 Ноября 2009
+50.7
- 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
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++, милости прошу.
interested,
30 Октября 2009
+150.9
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
//$arr - array with arbitrary keys
end($arr);
do {
if( <some condition> ) {
<something of no importance>
unset($arr[key($arr)]);
}
else {
<something of no importance>
}
} while( prev($arr) !== false );
Предполагалось, что на входе будет непустой массив. Потом он будет пролистан с конца (это необходимо) и из него по некоторому условию исключаются элементы. При этом после первого исключения итератор оказывается вне массива и prev() возвращает false (в самом массиве false не размещён заведомо).
interested,
25 Августа 2009