Parafrazując: "static" ten keyword to kłopoty. Przestań korzystać z tego lipnego rozwiązania i skup się na OOP a nie na protezie zwanej static
Wersja do druku
Parafrazując: "static" ten keyword to kłopoty. Przestań korzystać z tego lipnego rozwiązania i skup się na OOP a nie na protezie zwanej static
Siemanko,
Mam problem z łączeniem dwóch obiektów w jeden c++ (concatenate~~). Napisałem coś takiego:
I teraz w funkcji main(), mam dwa obiekty, stosA, i stosB, wszystko ładnie działa, tylko nie chce mi działać ta funkcja w/w tak aby wypisała mi te stosy razem, prawdopodobnie źle ją wywołuje.Cytuj:
void queue::concatenate(queue A){
this->tail = A.head;
A.head = this -> head;
}
Trochę chaotycznie napisane, ale jutro muszę to oddać rano na zaliczenie. :D
Cały kod programu
tail wskazuje na twoj ostatni obiekt, a head na pierwszy. Jezeli wpiszesz tam w taki sposob adres to sobie nadpiszesz jeden obiekt drugim.
musisz najpierw ustawic tail.next na head a potem przypisac tail
sprobuj cos takiego,
teraz nie mam mozliwosci zeby tego zbudowac ale jak cos bedzie nie tak to daj znac to wieczorem zbudowac moge i przedebugowacCytuj:
void queue::concatenate(queue &A){
this->tail->next = A.head;
this->tail = A.tail;
A.head = this -> head;
A.tail = this->tail;
}
ktoś z was pracował jako programista w comarchu lub ma rozeznanie jak wygląda tam praca? bo dostałem się na staż wakacyjny i opinie generalnie są różne :P
u mnie w pracy jak ktoś wspominał o tej firmie to od razu same hejty dookoła leciały ze wszystkich stron. Jednak ja na twoim miejscu bym się nawet nie zastanawiał i brał w ciemno a potem próbował się zatrudnić na etat jak będziesz miał taką propozycję. Bo możliwość zdobycia doświadczenia i stażu pracy jest bezcenna
Wlasciciel firmy mial kiedys powiedziec taką piekna sentencje swiadczaca o jego podejsciu:
"kazdego wykwalifikowanego pracownika da sie zastapic skonczona liczba studentow."
Jakis czas pozniej bylo glosno o nim bo narzekal na programistow jacy to oni sa rozpieszczeni i zadaja caly czas coraz lepszych warunkow. Bo myslal ze jedyne czym moze zatrzymac dobrych pracownikow to piniondz i sluzbowy samochod. A z relacji chodzilo o podejscie do profesjonalistow, byle szybciej, zapierdalaj, najlepiej po godzinach.
Kilka lat pozniej mowil ze wykwalifikowani pracownicy sa bardzo duzo warci, i jest gotow placic kazde pieniadze. Moze sie nawrocil, a moze tylko tak powiedzial do PR.
Info gdzies tam kiedys przeczytane, niepotwierdzone.
Anyway, w necie zobaczysz duzo smieci starych, ktore dzisiaj moga nie miec odzwierciedlenia, bo moglo sie podejscie zmienic.
Mam kumpla w pracy ( >6 lat expa już) który chyba na 3 roku się załapał i półtora roku tam siedział. Mówił że było chujowo, ale stablinie. Podstaw się nauczył, ale mówił że zależy od projektu. Czyli jak w każdej firmie. Ja bym raczej nie poszedł ze względu na opinie, ale jak dostałeś się na staż to nie masz nic do stracenia, spróbować warto. Przynajmniej własne zdanie sobie wyrobisz.
@Wielkie Zło ; @Alex Fortune ;
Generalnie rozumiem dlaczego, ale co z przypadkami, gdy klasa ma robic za cos w rodzaju narzedziowki? Aktualny moj projekt to edytor baz danych (MySQL) i te klasy statyczne maja obslugiwac roznego rodzaju zapytania jak przykladowo edycja rekordow, tworzenie nowych tabel itd. Wydaje mi sie, ze tworzenie obiektu dla takich rzeczy jest po prostu zbedne.
nie, nie jest
klasy sa od tego by enkapsulować odpowiedzialności. Jak najbardziej tworzenie instancji do czegoś takiego jest zasadne.
Tego typu klasy też są chujowe, nic nie mówi o jej odpowiedzialności. Najczęściej ludzie pchają tam to, czego nie umieli sensownie podzielić.
@Alex Fortune ;
Podeślesz jakieś swoje repo projektu? Chętnie bym przejrzał jak robisz aplikacje :P
W takim razie jak poprawnie wypadaloby to podzielic na klasy? Bo zgaduje, ze reprezentowanie osobno bazy, tabeli, rekordu, uzytkownika itd. jest duzym marnotrawstwem i tez nie widzi mi sie specjalnie przetrzymywac czegos, co juz jest po raz drugi, szczegolnie gdyby pracowac np. na tysiacach rekordow.
A co ze wbudowanymi klasami statycznymi (np. Path <System.IO>)? Tez samo zlo? Jak pisalem, rozumiem dlaczego (cos innego anizeli sam obiekt zmienia stan obiektu), ale tutaj praktycznie chcemy tylko operowac na czyms.
Takie klasy sprawiaja, ze kod jest dobrze zroganizowany - kazdy wie, gdzie czego szukac a to usprawnia kodowanie i wspolprace z innymi devami.
Dobre pratyki sa po to, aby usprawniac prace i do mnie np. grupowanie string helperow w StringUtils/StringHelpers przemawia jak najbardziej.
nie
Dobre praktyki są po to, aby kod, który rozwjiasz miał pewne cechy - był elastyczny, łatwo modyfikowalny, podatny na zmiany a jednocześnie niepodatny na mnóstwo ewentualnych błędów.
Dobre praktyki w ŻADNYM razie nie powinny słuzyć temu, aby programista czuł się "komfortowo", z prostej przyczyny - bardzo często ludzie czują się komfortowo z niepoprawnymi rozwiązaniami, brną w nie a potem ich kod wygląda jak wygląda, bo zamiast podjąć pracę nad sobą, to woleli napisać to ,,na swój sposób" i potem jest dramat.
a po co mu te cechy?
po to aby zwiekszyc efektywnosc pracy i komfort pracy i zrealizowac zadanie
gromadzenie helperow w jednym miejscu jest jak najbardziej intuicyjne, zwieksza komfort i pomaga zrealizowac zadanie
co do reszty mozemy miec rozne opinie i to jest spoko, ale to juz jest totalny rozpierdol xD
po to sa wszystkie konwencje i standardy, aby wprowadzenie nowego deva bylo mozliwie proste, szybkie i intuicyne
EDIT: wyjasnilismy sb co nieco na PW :)
A co jest jeszcze helperem, a co już nie jest? Z doświadczenia wiem, że wprowadzając taki "pattern" większość♥kodu później ląduje jako swoisty "helper" (vide static class i helpers.py) i tworzy się niesamowity burdel w kodzie. Klasy statyczne SĄ beznadziejne, i zawsze nimi będą.
Co do wbudowanych klas statycznych w .NET Framework to jedynym rozsądnym rozwiązaniem jakie występuje to owrapowanie tych protez w normalne klasy, które można zmockować na potrzeby testów. Nawet są biblioteki, które to już wrapują za nas.
Jeżeli chcemy zastosować jakiś pattern, to od tego jest kontener IoC, który za nas stworzy singleton czy cokolwiek tam potrzebujemy.
Baza danych to normalny element działający na stanie (połączeniu, lub transakcje), dlatego nie widzę argumentacji za brakiem stanu.
Siemka,
skonczylem licencjat z ekonomii i dopadła mnie rzeczywistość rynku pracy. Stwierdziłem, że zacznę sie zajmować czymś bardziej perspektywistycznym jak właśnie programowanie. Mój jedyny styk z jakimkolwiek programowaniem to było pisanie własnych skryptów (takich bardziej zaawansowanych :D) do botów do Tibii także moje pytanie jest nastepujące: czy warto się zainteresować programowaniem od zera? Jak tak to w jaki sposób rozpocząć naukę programowania oraz czy warto to podeprzeć jakimiś studiami?
programowac zawsze umiec warto.
btw. znacie jakies strony z spora iloscia latwych projektow w c/c++/ew. Java? tak aby poprostu cos programowac, praktyke jakas miec od czasu do czasu
wiem o co ci chodzi tylko nie zajmuje sie glownie programowaniem (jest to jakies 10% mojej pracy jak nie mniej) a wymyslanie dobrych zadan to tez nie jest takie proste zajecie, hackerrank znam i czesto uzywam, ale cos poza tym? tam sa fajne testcase ze nawet jak program ci dziala i wypelnia wszystkie wymogi to moze ci wyskoczyc ze cos zle jest zrobione i faktycznie trzeba sie poglowic wtedy.
Nie rozumiem co macie to klas statycznych. Po chuj tworzyć obiekty klas narzędziowych?
https://webmastah.pl/php-go-home-static-youre-drunk/
takie coś znalazłem.
Troche pierdolenie, jak ktoś kodzi jak idiota to nie moj problem.
Nożem też można pokroić chleb albo zabić człowieka, a to nie powoduje tego ze nóż jest zły.
Co do Math.Abs to dobry przykład bo akurat funkcje matematyczne się nie zmieniają, ale to się bardzo, bardzo, BARDZO rzadko zdarza.
A named constructor znam, osobiscie wole zwykłę instancjonowane fabryki, a statyczne fabryki ewentualnie w ramach convenience w połączeniu z wzorcem value object, ale to tyle
Panowie, jestescie w stanie polecic jakas ksiazke do react.js? Nie znam nawet dobrze javascripta, takze przyda sie cos od podstaw.
a znasz cokolwiek innego, czy zaczynasz od zera?
react jest tak maly i prosty, ze tu nie ma o czym pisac ksiazki
Tak, kodze w c#. Po prostu wgryzam sie w aplikacje webowe i chce sie troche podszkolic we frondendzie. Od czego zaczac, zeby to mialo rece i nogi?
Imho od ogarniecia podstawowych konceptow z JS jak callbacki, promisy, closures, prototype etc
Pozniej dokumentacja reacta i jedziesz z projektem
EDIT: w sumie to jak znasz C# to polecam zainteresowanie sie TypeScript. Syntax zblizony do C#, masz klasy, constructory, interface, block scope, let, const, arrow functions, private/public/protected, compile time checking i inteli-sense
Jako typowy backendowy nerd serdecznie polecam zaczac od tego co @Haan ; wymienil. Musialem ostatnio napisac pare linijek w node.js i nie wiedzialem co tam sie odpierdala XD
@Haan ;
dziekowka za pomoc, polecasz cos konkretnego do JS? Jak juz zaczne sie uczyc to chce ogarnac wiecej, niz podstawy
A reacta musze nauczyc sie do pracy, wiec tego nie omine
Dzieki panowie, plecaki leca
Witam
Pytanie do was programisci.
Ile moze / za ile byscie napisali program ktory ma sprawdzic kazda litere alfabetu.
Np
A AB ABC ABCD....
AZA AZB AZC
B BA BAB BAC
Zeby sprawdzic wszystkie dostepne kombinacje.
Nie zadne lamanie hasla, tylko szukanie slowa klucza chociaz to prawie to samo..
Kod:#include <stdio.h>
#include <string.h>
#define MAXLEN 8
#define ABEGIN 65
#define AEND 90
int main() {
char buf[MAXLEN];
memset(&buf,0x00,MAXLEN);
int len = 0;
while(len <= MAXLEN) {
// .. sprawdź czy slowo klucz, ale nie mam pojecia jaka ma byc logika bo bardzo malo napisales
printf("%s\n", buf);
bool increaseCharacters = true;
int i;
for(i = len-1; i >= 0; --i) {
if(increaseCharacters) {
if(buf[i] == AEND) {
buf[i] = ABEGIN;
} else {
buf[i]++;
increaseCharacters = false;
}
}
}
if(increaseCharacters) {
buf[len] = ABEGIN;
len++;
}
}
}