Miesięczne archiwum: Kwiecień 2014

Hipokryzja

std::string linia;
std::getline(std::cin, linia);

Czasami widzę opinie, jak to referencje są niebezpieczne, bo mogą ukrywać efekty uboczne, oraz że tutaj std::getline powinno raczej przyjmować wskaźnik, żeby wszyscy wiedzieli, że linia może zmienić swoją zawartość wewnątrz funkcji.

Ponieważ C jest super i nie pozwala na zmianę zawartości argumentów poprzez funkcję, chyba że widać & (najwyraźniej nawet twórca C++ FQA tak uważa)…

TYP x, y;
// ustaw zmienne
z = f(x, y);
// argumenty się nie zmieniły!

Hahahaha, chyba se żartujecie

typedef char TYP[50];
char* f(char* dest, const char* source)
{
    return strcpy(dest, source);
}

To może być uznawane za argument za tym, żeby nie używać typedefów do C-tablic (z czym też się zgadzam), lecz dla mnie to jest syndrom większego problemu z C – tego, że połowa funkcjonalności jest zupełnie nielogiczna i niekonsekwentna (C-tablice zachowują się zupełnie inaczej niż praktycznie każdy inny typ).

Powyższa demonstracja nie unieważnia tezy, że „argumenty wyjściowe to zło”. Niestety, jest to zło konieczne. C++ na szczęście ma dzisiaj wygodniejsze alternatywy (o czym będzie w kolejnych wpisach)

OpenCart, czyli jak zrujnować swoją reputacje w 4 dni.

Cała historia zaczęła się wtedy, gdy użytkownik GitHuba Damian Bushong zwrócił uwagę Danielowi Kerrowi, maintainerowi projektu OpenCart, że jedna z funkcji przeniesiona z kodu źródłowego innego projektu nie wskazuje na oryginalnego autora, łamiąc warunki licencji. Poprawienie tego problemu normalnie by zajęło 5-10 minut, jednak Daniel Kerr stwierdził, że łatwiej jest po prostu odpowiedzieć „fuck off!”. No i rozpoczęła się największa fala czarnego PRu od czasów Ocean Marketing.

Oryginalny wątek był tutaj Historię całego wątku przed serią usuwania komentarzy można zobaczyć tutaj