- 1
- 2
- 3
- 4
void get_me(const char **retval)
{
*retval = "Hello, Word!";
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+125
void get_me(const char **retval)
{
*retval = "Hello, Word!";
}
Надейся на компилятор...
+130
#include <stdlib.h>
struct no_matter
{
int some_field;
};
struct matter *do_stuff(void)
{
struct no_matter *m = calloc(1, sizeof *m);
return m;
}
int main(void)
{
struct no_matter *m = do_stuff();
free(m);
return 0;
}
Сегодня выполняю роль гумна. В сишке можно возвращать указатель на непонятно откуда взявшуюся необъявленную ранее структуру и код будет компиляться (ладно хоть пишет невнятные ворнинги, только благодаря им нашёл опечатку в одной букве в имени структуры в рабочем коде). Понятно, что все указатели одинаково числа, но всё равно как-то некрасиво. Хацкелисты негодуэ, даёшь монаду Ptr
http://ideone.com/3SABHW
+15
#include <iostream>
#include <functional>
template<class Container, class F, class A>
auto accumulate(Container c, F f, A acc) -> A
{
auto id = [](const A& a) -> const A& {return a;};
typedef decltype(std::begin(c)) Iterator;
const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt =
[&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
{
if(lst==c.end())
return cont(acc);
else
{
auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
return doIt(lst+1, conter);
}
};
return doIt(std::begin(c), id);
}
int main() {
std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
return 0;
}
Похоже написал какой-то монадолог.
http://ideone.com/y4Dm9z
Пример использования accumulate сам накатал.
Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
http://ideone.com/XWfuoP
Я убежден, что эта функция должна была выглядеть как-то так:
template<class Container, class F>
accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
{
return std::accumulate(c.begin(), c.end(), acc, f);
}
//Вызов этой функции:
accumulate({1,2,3,4});
let fold_right func acc list =
let rec loop list cont = //сюда мы передаем текущую функцию континуации
match list with
|[] -> cont acc //а вот и наше ключевое вычисление.
|head::tail -> loop tail (fun racc -> cont (func head racc))
loop list (fun x -> x)
+136
private BusinessSocialProfile GetSocialProfileLink(string searchProvider, string searchKey)
{
var link = new BusinessSocialProfile { Name = searchProvider, Url = "#" };
if (searchProvider.Contains("city", StringComparison.InvariantCultureIgnoreCase))
{
link.Url = cityLink;
link.Logo = "/citysearch.png";
link.ImageStyle = "margin-top:-8px";
}
else if (searchProvider.Contains("google", StringComparison.InvariantCultureIgnoreCase))
{
link.Url = googleLink;
link.Logo = "/google.png";
}
else if (searchProvider.Contains("yelp", StringComparison.InvariantCultureIgnoreCase))
{
link.Url = yelpLink;
link.Logo = "/yelp.png";
link.ImageStyle = "margin-top:-8px";
}
else if (searchProvider.Contains("manta", StringComparison.InvariantCultureIgnoreCase))
{
link.Url = mantaLink;
link.Logo = "/manta.png";
}
else if (searchProvider.Contains("patch", StringComparison.InvariantCultureIgnoreCase))
{
link.Url = patchLink;
link.Logo = "/patch.png";
}
else
{
link.Url = "#";
link.Logo = string.Empty;
link.Name = string.Empty;
}
return link;
}
уже до боли известный девелопер ;) а для чего еще нужна бизнесс-логика...?
+71
class ........... {
BigDecimal t;
...
public boolean t_is_zero(){
BigDecimal zero = new BigDecimal(0);
if(this.t == zero)
return true;
else
return false;
}
...
}
для операции сравнения была создана новая переменная как эквивалент )
+132
enum
{
MaxStringLen = 1024
};
Офигенный метод объявления констант!
+184
__declspec (naked) INT16U getWordOfCPUFlags(void)
{
_asm
{
pushf;
xor eax, eax;
pop ax;
ret;
}
}
void setWordOfCPUFlags(const INT16U WordOfCPUFlag)
{
_asm
{
push WordOfCPUFlag;
popf;
}
}
bool getCPUTraceFlag(void)
{
return 0 != (getWordOfCPUFlags() & 0x100);
}
void setCPUTraceFlag(const bool CPUTraceFlag)
{
const INT16U MaskOfTraceFlag=((INT16U)CPUTraceFlag)<<8;
//setWordOfCPUFlags( (getWordOfCPUFlags() and ~MaskOfTraceFlag) ^ MaskOfTraceFlag);
if(CPUTraceFlag)
setWordOfCPUFlags( getWordOfCPUFlags() | MaskOfTraceFlag);
else
setWordOfCPUFlags( getWordOfCPUFlags() & ~MaskOfTraceFlag);
}
Видимо автору кода строка 29 показалась слишком сложной.
−119
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
.....
ГДЕ
.....
И ОсновныеНачисления.Авторасчет = Истина
И ОсновныеНачисления.Авторасчет = Ложь"
Выбрать обязательно различные! :)
−165
/**
* This is a really fast way to check for NaN; see the spec of NaN
* on why this works; this check can yield false only for a Number
* since it's the only one capable of having NaN as a value.
*/
if (d != d) {
throw new Error("value can't be NaN!");
}
+162
function cut($text){
$full_text = explode("<cut/>",$text);
return $full_text;
}
Функция обрезания текста по тегу <cut/>