- 1
- 2
#define BYTEMAX 0xFF
#define BYTEOVERFLOW (BYTEMAX+1)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+69
#define BYTEMAX 0xFF
#define BYTEOVERFLOW (BYTEMAX+1)
C++ вокруг. Интересует насколько это вменяемая практика?
+139
public class Switch
{
public Switch(object switchElement)
{
Object = switchElement;
}
public object Object{get; private set; }
}
public static class SwitchExtensions
{
public static Switch Case<T>(this Switch switchCase, Func<T, bool> isTrue, Action<T> action) where T : class
{
return Case(switchCase, isTrue, action, false);
}
public static Switch Case<T>(this Switch switchCase, Func<T, bool> isTrue, Action<T> action, bool fallThrough) where T : class
{
if (switchCase == null)
return null;
var obj = switchCase.Object as T;
if (obj != null)
if (isTrue(obj))
{
action(obj);
return fallThrough ? switchCase : null;
}
return switchCase;
}
}
//пример использования
IImporter<AccountModel> result = null;
new Switch(type)
.Case<string>(x => x == ".xls", y => result = new ExcelImporter())
.Case<string>(x => x == ".csv", y => result = new CsvImporter());
return result;
У нас будет свой Switch/Case с преферансом, куртизанками и экстеншен методами
+144
;(function ($) {
// alias Math methods - used a lot!
var min = Math.min
, max = Math.max
, round = Math.floor
lol
+102
var usr = Enumerable.Range(1, 1)
.Select(id => new User(1, "FooBar", "desc" + 1, DateTime.UtcNow))
.ToReadonly()
.GetRandomElement();
Из юнит-теста. Копипаста рождает чудовищ.
+162
.replace(/😊/g,'<img src="http://vk.com/images/emoji/D83DDE0A.png">')
.replace(/😃/g,'<img src="http://vk.com/images/emoji/D83DDE03.png">')
.replace(/😆/g,'<img src="http://vk.com/images/emoji/D83DDE06.png">')
.replace(/😉/g,'<img src="http://vk.com/images/emoji/D83DDE09.png">')
.replace(/😜/g,'<img src="http://vk.com/images/emoji/D83DDE1C.png">')
.replace(/😋/g,'<img src="http://vk.com/images/emoji/D83DDE0B.png">')
.replace(/ðŸ˜/g,'<img src="http://vk.com/images/emoji/D83DDE0D.png">')
.replace(/😎/g,'<img src="http://vk.com/images/emoji/D83DDE0E.png">')
.replace(/😒/g,'<img src="http://vk.com/images/emoji/D83DDE12.png">')
.replace(/ðŸ˜/g,'<img src="http://vk.com/images/emoji/D83DDE0F.png">')
.replace(/😔/g,'<img src="http://vk.com/images/emoji/D83DDE14.png">')
.replace(/😢/g,'<img src="http://vk.com/images/emoji/D83DDE22.png">')
.replace(/ðŸ˜/g,'<img src="http://vk.com/images/emoji/D83DDE2D.png">')
.replace(/😩/g,'<img src="http://vk.com/images/emoji/D83DDE29.png">')
.replace(/😨/g,'<img src="http://vk.com/images/emoji/D83DDE28.png">')
.replace(/ðŸ˜/g,'<img src="http://vk.com/images/emoji/D83DDE10.png">')
.replace(/😌/g,'<img src="http://vk.com/images/emoji/D83DDE0C.png">')
.replace(/😠/g,'<img src="http://vk.com/images/emoji/D83DDE20.png">')
.replace(/😡/g,'<img src="http://vk.com/images/emoji/D83DDE21.png">')
.replace(/😇/g,'<img src="http://vk.com/images/emoji/D83DDE07.png">')
.replace(/😰/g,'<img src="http://vk.com/images/emoji/D83DDE30.png">')
.replace(/😲/g,'<img src="http://vk.com/images/emoji/D83DDE32.png">')
.replace(/😳/g,'<img src="http://vk.com/images/emoji/D83DDE33.png">')
.replace(/😷/g,'<img src="http://vk.com/images/emoji/D83DDE37.png">')
.replace(/😚/g,'<img src="http://vk.com/images/emoji/D83DDE1A.png">')
.replace(/😈/g,'<img src="http://vk.com/images/emoji/D83DDE08.png">')
.replace(/â¤/g,'<img src="http://vk.com/images/emoji/2764.png">')
.replace(/ðŸ‘/g,'<img src="http://vk.com/images/emoji/D83DDC4D.png">')
.replace(/👎/g,'<img src="http://vk.com/images/emoji/D83DDC4E.png">')
.replace(/â˜/g,'<img src="http://vk.com/images/emoji/261D.png">')
.replace(/✌/g,'<img src="http://vk.com/images/emoji/270C.png">')
.replace(/👌/g,'<img src="http://vk.com/images/emoji/D83DDC4C.png">')
Моя реализация обработки смайликов из VK. Это потом уже голова стала соображать и всё заменилось регуляркой с функцией.
+141
foreach (var item in text.Split(' ')) {
if (!string.IsNullOrEmpty(item)) {
text = item;
break;
}
}
переменная text всегда содержит несколько пробелов и затем идентификатор.
+989
stek* getLast(){
stek* result = first;
while (!isLast(*result)){
result = result->next;
}
return result;
}
void push( char* string ){
stek* anew = new stek;
anew->string = string;
anew->next = NULL;
anew->first = first;
getLast()->next = anew;
}
void printList(){
if (first != NULL){
stek* element = first;
puts( element->string );
while (!isLast(*element)){
element = element->next;
puts( element->string );
}
}
else{
puts( "List is empty" );
}
}
stek* getPrev( stek* element ){
stek* result = first;
while (result->next != element){
result = result->next;
}
return result;
}
void changeFirstInList( stek* newFirst ){
stek* element = first;
while (element != NULL){
element->first = newFirst;
element = element->next;
}
}
void deleteElement( stek* element )
{
if ( element->first == element ){
first = element->next;
changeFirstInList( first );
}
else{
stek* prev = getPrev( element );
stek* next = element -> next;
prev->next = next;
}
}
void deleteElements( int length ){
stek* element = first;
while (element != NULL){
stek* next = element->next;
if (strlen(element->string) < length) {
deleteElement( element );
}
element = next;
}
}
int _tmain(int argc, _TCHAR* argv[]){
char *token;
char st1[80];
int minLength = 4;
int n=0;
printf("Enter string: ");
gets( st1 );
printf("Enter minimal length: ");
scanf( "%d", &minLength );
first=NULL;
first=new stek;
first->next=NULL;
first->first=first;
token=strtok(st1," ");
first->string=token;
token=strtok(NULL," ");
while( token != NULL){
push(token);;
token=strtok(NULL," ");
}
stek* element = first;
while (element != NULL){
stek* next = element->next;
if (strlen(element->string)<3) n++;
element = next;
}
puts("Initial stack:");
printList();
deleteElements( minLength );
printf("Slov dlinoi less than 3: %d\n",n);
puts("After deleting:");
printList();
getch();
}
Лабораторная работа, написанная двумя студентами первого курса. Задание: "Дана строка 80 символов, разбить её на слова (разделитель - пробел), удалить слова меньше опр. длины и вывести количество слов с длиной меньше 3-ех".
Почти каждая строчка в main'e - перл.
З.Ы. Форматирование кода тоже доставляет.
+160
http://habrahabr.ru/blogs/about_cms/130082/
facepalm.png
dlemaser (aka WebKill), хабр ниторт^Wговно
+160
window.alert = function(){
events.event(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);
}
И это - в продакшене. Писано - для военных
+160
HRESULT GetOutlookVersionString(LPSTR* ppszVer, BOOL* pf64Bit)
{
HRESULT hr = E_FAIL;
LPSTR pszTempPath = NULL;
LPSTR pszTempVer = NULL;
TCHAR pszaOutlookQualifiedComponents[][MAX_PATH] = {
TEXT("{1E77DE88-BCAB-4C37-B9E5-073AF52DFD7A}"), // Outlook 2010
TEXT("{24AAE126-0911-478F-A019-07B875EB9996}"), // Outlook 2007
TEXT("{BC174BAD-2F53-4855-A1D5-0D575C19B1EA}") // Outlook 2003
};
int nOutlookQualifiedComponents = _countof(pszaOutlookQualifiedComponents);
int i = 0;
DWORD dwValueBuf = 0;
UINT ret = 0;
*pf64Bit = FALSE;
for (i = 0; i < nOutlookQualifiedComponents; i++)
{
ret = MsiProvideQualifiedComponent(
pszaOutlookQualifiedComponents[i],
TEXT("outlook.x64.exe"),
(DWORD) INSTALLMODE_DEFAULT,
NULL,
&dwValueBuf);
if (ERROR_SUCCESS == ret) break;
}
if (ret != ERROR_SUCCESS)
{
ret = MsiProvideQualifiedComponent(
pszaOutlookQualifiedComponents[i],
TEXT("outlook.exe"),
(DWORD) INSTALLMODE_DEFAULT,
NULL,
&dwValueBuf);
}
else
{
*pf64Bit = TRUE;
}
if (ret == ERROR_SUCCESS)
{
dwValueBuf += 1;
pszTempPath = (LPSTR) malloc(dwValueBuf * sizeof(TCHAR));
if (pszTempPath != NULL)
{
if ((ret = MsiProvideQualifiedComponent(
pszaOutlookQualifiedComponents[i],
TEXT("outlook.exe"),
(DWORD) INSTALLMODE_EXISTING,
pszTempPath,
&dwValueBuf)) != ERROR_SUCCESS)
{
goto Error;
}
pszTempVer = (LPSTR) malloc(MAX_PATH * sizeof(TCHAR));
dwValueBuf = MAX_PATH;
if ((ret = MsiGetFileVersion(pszTempPath,
pszTempVer,
&dwValueBuf,
NULL,
NULL))!= ERROR_SUCCESS)
{
goto Error;
}
*ppszVer = pszTempVer;
pszTempVer = NULL;
hr = S_OK;
}
}
Error:
free(pszTempVer);
free(pszTempPath);
return hr;
}
Говнокод от САМОГО Билли... 21 век на дворе, а у нас в C++ коде goto Error написано (точнее - накакано).
Источник - http://msdn.microsoft.com/en-us/library/dd941331.aspx