• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak dobrze pisać kod? Gdzie znaleźć wzorce projektowe?

VPS Starter Arubacloud
0 głosów
463 wizyt
pytanie zadane 8 marca 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
edycja 9 marca 2022 przez Daaa22

Mam opanowaną dużą ilość teorii, co jaka funkcja robi, jak działają pętle, zmienne, wskaźniki, polimorfizm, ogólnie dużo, ale czasami jak pisze kod spotykam się z tym że nie wiem jakiego rozwiązania użyć albo jak powinny wyglądać wzorce projektowe. Przykładowo ostatnio miałem problem z kodem

while(cośtam)
{
 vector<Line>::iterator skip; //tu mam problem, bo chciałbym żeby ten skip nie miał jakiegoś śmiecia w pamięci (różne skutki to może mieć) tylko jakiś null ale takie coś w iteratorach nie występuje

 for( auto it = Map.begin(); it != Map.end(); it++ )
  for( auto iter = it -> line.begin(); iter != it -> line.end(); iter++ )
  {
   if( iter == skip )
    continue;
   if(jakiś warunek)
   {
    skip = iter;
   }
  }

 //tutaj jakiś kod 
}

trzeba to robić naokoło deklarując jakiś bool skipExist = false; i warunek potem if(skipExist)? Czy są jakieś ładniejsze sposoby na to? Polecacie jakieś źródła wzorców projektowych?

komentarz 9 marca 2022 przez TOM_CPP Pasjonat (22,640 p.)

Zadaj sobie pytanie czy kiedykolwiek możliwe jest aby iteratory skip i iter wskazywały na ten sam element w momencie ich porównywania. Jaki jest sens tego kodu, co chcesz osiągnąć?

komentarz 9 marca 2022 przez Daaa22 Dyskutant (8,250 p.)

jest to możliwe. Ogólnie robiłem program w którym rysowałem figury geometryczne i stawiałem taki laser którego ustawiałem kąt padania i program liczył jak ten laser się będzie odbijał i rysował go na ekranieI gdzieś tam był problem bo jak nie było skip to program czasami sprawdzał czy laser odbija się od ściany od której dopiero co się odbił co było związane chyba z ograniczoną precyzją double więc dodałem ten iterator skip

1 odpowiedź

+1 głos
odpowiedź 9 marca 2022 przez rafal.budzis Szeryf (85,260 p.)
wybrane 9 marca 2022 przez Daaa22
 
Najlepsza

Jeśli chodzi o to że skip może być nullem lub iteratorem a ty nie chcesz dodawać warunków w kodzie to przyda Ci się tak zwany NullObject ;) Chodzi o to że tworzysz specjalny NullIterator który implementuje wszystkie metody ale zwraca na stałe takie wartości jak by był pusty ;) 

https://refactoring.guru/pl/introduce-null-object

Odnośnie stron polecam właśnie refactoring.guru najwięcej przykładów duża cześć po polsku ;) 

 

Podobne pytania

0 głosów
0 odpowiedzi 250 wizyt
pytanie zadane 18 listopada 2021 w C# przez Zaba096 Początkujący (260 p.)
+1 głos
1 odpowiedź 847 wizyt
pytanie zadane 27 września 2019 w Python przez kombin4tor Nowicjusz (130 p.)
0 głosów
3 odpowiedzi 1,029 wizyt
pytanie zadane 11 grudnia 2018 w PHP przez Krzysio4224 Obywatel (1,690 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...