Wpis z mikrobloga

@zygzagZ: Kod na 3+ lub 3-, zaleƶy czym jest exist. Jeśli członkiem klasy to dobrze, inaczej źle.

Nie rezerwujesz pamięci stringa ret, więc będziesz miał kilka zbędnych realokacji. Dodatkowo nazwany jest ret, mimo, ƶe funkcja zwraca void.

Nie uƶywasz args, jednocześnie przekazując ten argument przez
  • Odpowiedz
@zygzagZ: Komentarze nie załatwiają magic numbers. Te rzeczy powinny być jako stałe, na początku pliku lub w innym pliku (nie ma reguły, ważne by nie były gdzieś pośrodku). Dlaczego? Bo jeśli kilka razy używasz 65k jako warunku zakończenia pętli, i kiedyś zmienisz to na 128k, to zmieniasz jedną zmienną a nie 10. DRY.

  • Odpowiedz
@zygzagZ:
Czytałem poprawioną wersję stąd: http://wklej.to/gWBuZ
1. Za długa funkcja. Powinna być podzielona na kilka mniejszych, z których każda ma tylko jedno zadanie - ta po prostu robi kilka rzeczy. Pamiętaj przy tym o odpowiednim nazewnictwie.
2. Zależnie od konwencji, jedna deklaracja zmiennej, jedna linijka. Nie ma sensu deklarować przy tym zmiennej tam gdzie jeszcze nie jest potrzebna - to z resztą wyjdzie jak podzielisz tą funkcję na podfunkcje.
3. Niekonsekwentnie używane klamry - raz otwierasz je w nowej linijce, raz na końcu linijki. Sam poza tym jestem przeciwnikiem dodawania klamer w if'ie jeśli jest trywialny i ma tylko jedną linijkę.
4. Deklarowanie std::string przez przypisanie pustego ciągu znaków nie ma
  • Odpowiedz
15. Zamiast functionLog powinieneś użyć std::stringstream. Operatory += na string'u są bardziej kosztowne, a dodatkowo nie będziesz musiał robić konwersji do string'a ręcznie.


@losiul:

brak string buildera, kto jeszcze używa
  • Odpowiedz
@kuhar:
Potrafię podać kilka powodów:
- Brak konwersji do strumienia (musisz to robić ręcznie). Dodatkowo, przy konwersji powstaje tymczasowy string, który istnieje tylko na chwilę, tylko po to żeby go dołączyć do reszty string'a.
- Brak kontroli nad konwersją (chcesz zaokrąglić liczbę zmiennoprzecinkową? chcesz komórkę szerokości 7 znaków? itd, itp)
- nieoptymalne zarządzanie pamięcią z prealokacją
Coś bym jeszcze wymyślił, ale późno jest.
  • Odpowiedz