Ocena kodu moich programów

0

Witam

Staram się znaleźć jakąś prace bądź staż, choć w większości ofertach pracy wymagane są studia bądź lata doświadczenia komercyjnego, nie mam ani tego, ani tego, gdyż jestem samoukiem po technikum, a chciałbym zjeść na programowaniu zęby.

Prosiłbym was o zerknięcie kod moich przykładowych programów oraz ocenę moich umiejętności na jego podstawie (także o konstruktywną krytykę), dodatkowo o jakieś porady co robić dalej, na co mogę z takimi umiejętnościami liczyć.

No i oczywiście mój GitHub

Z góry dziękuje za odpowiedzi i zmarnowany na mnie czas.

5
  1. piszesz w C z klasami zamiast w C++. Wszystko ma byc obiektowe, nie rob funkcji w main tylko odpowiednia klase ktora sie tym zajmie
  2. uzywasz nagich wskaznikow (poczytaj o RAII)
  3. formatowanie kodu
  4. magic numbers
  5. nazewnictwo void TheWay(RenderWindow * window) TheWay moze tez oznaczac jakiegos rapera ;)
  6. obliczenia w warunkach
void MindBlow(RenderWindow * window)
{
    Int32 popX = 0;Int32 popY = 0; for(Int32 i = -x/2;i<x/2;i++){if(i != -x/2){ float col = 128*cos((i+clock()%18000)*0.3)+128;
    Vertex line[ 2 ] ={ Vertex( Vector2f( popX+250, -(popY-250) ) ,Color(0,0,0,256*cos((i+clock()%18000)*0.3)-128)),
    Vertex( Vector2f( i+250, -(sin((i+clock()%18000)*0.3)*(i-250-clock()/50)/5-250) ) ,Color(0,0,0,256*cos((i+clock()%18000)*0.3)-128)) };
    window->draw(line,2,Lines);} popX = i; popY = static_cast<int32_t>(-sin((i+clock()%18000)*0.3)*(i-250-clock()/50)/5);}
    for(Int32 i = -x/2;i<x/2;i++){if(i != -x/2) { float col = 128*cos((i+clock()%18000)*0.3)+128;
    Vertex line[ 2 ] = { Vertex( Vector2f( popX+250, -(popY-250) ) ,Color(col,i,col)), Vertex( Vector2f( i+250, -(-sin((i+clock()%18000)*0.3)*(i-250)*8-250) ) ,Color(200,0,0))  };
    window->draw(line,2,Lines); } popX = i;  popY = static_cast<int32_t>(-sin((i+clock()%18000)*0.3)*(i-250)*8);}
}

zgadzam sie z nazewnictwa tej funkcji. Ten kod to po prostu mindblow. Nikt oprocz ciebie go nie zrozumie, za miesiac nawet sam nie bedziesz rozumial

mam wrazenie ze lamiesz DRY

to odnosnie Random-Graphics

odnosnie Game

  1. czemu rozdzielasz include? Jezeli bedziesz miec 1000 plikow to bedziesz miec 1000 plikow w include i include folder bedzie kontenerem na wszystkie headery?
  2. polsko angielskie nazewnictwo. Pisz wszystko po angielsku
  3. formatowanie
  4. srand(time(NULL)); to jest praktycznie depricated. https://stackoverflow.com/questions/19665818/generate-random-numbers-using-c11-random-library
  5. RAII
  6. 1 klasa jeden plik
  7. poczytaj o SOLID
  8. #pragma once zamiast #ifdef
  9. brak testow

dalej mi sie juz nie chce. Popraw to co wyzej to wtedy sprawdze bardziej szczegolowo

0

Ja jeszcze dodam:

  • zależności w repo (SFML) i to w postaci binarnej.
0

Nigdy jeszcze nie widziałem aż takich długich linii kodu...

u siebie w N++ mam taką opcje że jest pasek który ustawiony jest na max 90 znakach
i staram się go nie przekraczać tymczasem twój kod jest sporo za tym paskiem...

masz:

void MindBlow(RenderWindow * window)
{
    Int32 popX = 0;
	Int32 popY = 0; 
	
	
	for(Int32 i=-x/2;i<x/2;i++)
	{
		if(i!=-x/2)
		{ 
			float col=128*cos((i+clock()%18000)*0.3)+128;
			Vertex line[2]={
				Vertex(Vector2f(popX+250,-(popY-250)),Color(0,0,0,256*cos((i+clock()%18000)*0.3)-128)),
				Vertex(Vector2f(i+250,-(sin((i+clock()%18000)*0.3)*(i-250-clock()/50)/5-250)),Color(0,0,0,256*cos((i+clock()%18000)*0.3)-128))
				};
			
			window->draw(line,2,Lines);
		}
	popX=i; 
	popY=static_cast<int32_t>(-sin((i+clock()%18000)*0.3)*(i-250-clock()/50)/5);
	}
    
	
	
	for(Int32 i=-x/2;i<x/2;i++)
	{
		if(i!=-x/2) 
		{ 
			float col = 128*cos((i+clock()%18000)*0.3)+128;
			Vertex line[2]={
				Vertex(Vector2f(popX+250,-(popY-250)),Color(col,i,col)),
				Vertex(Vector2f(i+250,-(-sin((i+clock()%18000)*0.3)*(i-250)*8-250)),Color(200,0,0))
				};
			
			window->draw(line,2,Lines); 
		} 
	popX=i;  
	popY=static_cast<int32_t>(-sin((i+clock()%18000)*0.3)*(i-250)*8);
	}
}

Nie rozumiem po co taka nazwa i po co tak napisałeś tą funkcję...
ale kiedy zobaczyłem to:

quad[i*2].position = Vector2f( cos(i*PI/180)*B(D,i/360)*R+250, -(sin(i*PI/180)*B(D,i/360)*R-250));
quad[i*2].color = Color(Z(sin(clo))*c[0] , Z(sin(clo+120*PI/180))*c[0] , Z(sin(clo+240*PI/180))*c[0]);

quad[i*2+1].position = Vector2f( cos(i*PI/180)*B(D,i/360)*R2+250, -(sin(i*PI/180)*B(D,i/360)*R2-250));
quad[i*2+1].color = Color(Z(sin(clo))*c[1] , Z(sin(clo+120*PI/180))*c[1] , Z(sin(clo+240*PI/180))*c[1]);

quad2[i*2].position = Vector2f( cos(i*PI/180)*R2*B(D,i/360)+250, -(sin(i*PI/180)*R2*B(D,i/360)-250));
quad2[i*2].color = Color(Z(sin(clo+rad1))*c[2] , Z(sin(clo+120*PI/180+rad1))*c[2] , Z(sin(clo+240*PI/180+rad1))*c[2]);

quad2[i*2+1].position = Vector2f( cos(i*PI/180)*R3*B(D,i/360)+250, -(sin(i*PI/180)*R3*B(D,i/360)-250));
quad2[i*2+1].color = Color(Z(sin(clo+rad1))*c[3] , Z(sin(clo+120*PI/180+rad1))*c[3] , Z(sin(clo+240*PI/180+rad1))*c[3]);

quad3[i*2].position = Vector2f( cos(i*PI/180)*R3*B(D,i/360)+250, -(sin(i*PI/180)*R3*B(D,i/360)-250));
quad3[i*2].color = Color(Z(sin(clo+rad2))*c[4] , Z(sin(clo+120*PI/180+rad2))*c[4] , Z(sin(clo+240*PI/180+rad2))*c[4]);

quad3[i*2+1].position = Vector2f( cos(i*PI/180)*R4*B(D,i/360)+250, -(sin(i*PI/180)*R4*B(D,i/360)-250));
quad3[i*2+1].color = Color(Z(sin(clo+rad2))*c[5] , Z(sin(clo+120*PI/180+rad2))*c[5] , Z(sin(clo+240*PI/180+rad2))*c[5]);

to pomyślałem sobie... a ok ten MindBlow nie był wcale taki straszny...
przecież to jest jak zbieranina losowych znaków... tego sie nie da czytać xD
Największy moim zdaniem u cb problem to, to jak wygląda ten kod xD
bo człowieku nawet mój nie wygląda tak "Magicznie" :P delikatnie rzecz ujmując...

też odnośnie tego np.

uint32_t PointConnection::GetBegin()
{
    return BeginPoint;
}

to są gettery i settery które nie mają żadnej kontroli błędów?
całkowicie nie rozumiem napisania funkcji która po prostu zwraca jeden element bez podejmowania żadnych akcji...

ale ok, ja robię zupełnie inne rzeczy w zupełnie innym świecie to przyjmijmy że się nie znam
i ta funkcja ma jakikolwiek sens...

kiedyś widziałem klasę która wyglądała mniej więcej tak:

class Class{
	private:
		int a,b,d;
	public:
	void SetA(int A){
		a = A;
	}
	void GetA(){
		return a;
	}
}

i tak dla każdej zmiennej z osobna było... a 90% tego było niewykorzystywane...
no ale ok... "Przecież kiedyś może się przydać" xD tsa

czemu też nie ma żadnych komentarzy czy instrukcji?
rozumiem że jak piszesz dla siebie to tam ****** ***** < nie cenzurujcie mnie sam to zrobie >
ale jak pokazujesz komuś kod to przydałoby się dodać skromne instrukcje :P

np.

bool JustDraw(int y,int x){
	#include "src/JustDraw.cpp"
	/*
	:: This function will just draw image to def. screen
	:: --- Requirments ---
	:: int -> y coord to start drawing
	:: int -> x coord to start drawing
	*/

dzieląc wszystko na pliki nie będziesz musiał brać zapasów miesięcznych w drogę na koniec pliku aby go np. zmodyfikować
i nie musiałbyś brać zapasów na drogę powrotną :P lel

1

Koledzy powyżej już dość dobrze zwrócili uwagę co jest nie tak.
Aby kod był schludny i łatwiejszy w utrzymaniu oraz czytaniu polecam Ci abyś zapoznał się z książką Clean Code autorstwa R.C. Martina.
Poczytaj też o zasadach SOLID (np. na http://javadeveloper.pl/solid )

1 użytkowników online, w tym zalogowanych: 0, gości: 1