vpiotr napisał(a)
setMaximumLogFileSizeKB - wywaliłbym bo niepotrzebnie rozbudowuje interfejs (każdy PROGRAMISTA potrafi sobie to przeliczyć)
Pewnie,ale nie tędy droga prowadzi żeby kalkulatorem/w mysli wyliczać wielkość pliku logu,jeśli celem jest wygoda użytkowania biblioteki.
vpiotr napisał(a)
bool allowLogTypes(unsigned int type); - nazwy funkcji powinny pochodzić od czynności, a atrybutów od rzeczowników lub przymiotników
tutaj masz taką trochę pseudo-czynność w odniesieniu do atrybutu, lepsze byłoby "allowedLogTypes"
allowedLogTypes() są getterem.Ale fakt,jak oglądałem te funkcje leżące obok siebie w klasie to mnie nachodziły myśli,czy czasem nie lepiej przemianować na setAllowedLogTypes()
vpiotr napisał(a)
dla atrybutów używasz schematu setXxx(value) - setter, xxx() - getter, ale allowLogTypes się tego nie trzyma, LogWindowAlwaysOnTop też
Lepszy jest schemat setXxx(value), getXxx() - czytelniejsze
Czytaj wyżej ;) A ja stosuję konwencję z biblioteki Qt,gdzie gettery mają postać xxx() właśnie.
vpiotr napisał(a)
QString identifier(void);
-
jeśli identyfikator się nie zmienia to lepiej:
const QString &identifier() const; // w C++ pisze się bez void w argumentach + const correctness + szybsze
-
jeśli identyfikator się zmienia - bo to jest generator identyfikatorów
QString nextIdentifier();
Cóż,tutaj jest trochę względów historycznych.Nie chciałem dać żadnej możliwości zmiany tego identyfikatora przez złośliwego użytkownika,bo przewidywałem na przyszłość,iż będzie mi on potrzebny-stąd zwracanie wskaźnika/referencji odpada,bo consta da się obejść jak się ktoś uprze.
Jak jednak czas pokazał,akurat stąd nie używam go,niewykluczone więc iż ta funkcja wyleci-chociaż z 2 mańki,ktoś może sobie getLoggerem() natworzyć dużo logerów i wpakować do listy.I żeby rozróżnić który jest który to tego identyfikatora będzie potrzebował.
A voida pisać akurat lubię,wstukanie tych paru literek więcej mi nie przeszkadza.
vpiotr napisał(a)
bool setLogMode(LogMode mode);
- zwracanie bool w tym wypadku jest trochę nadmiarowe, naprawdę może się nie udać?
Może się nie udać.Nie czytałeś instrukcji,co Piotr? :P No więc false da próba nastawienia któregoś trybu LogToWindow w aplikacji konsolowej.
vpiotr napisał(a)
bazowanie na QStringu od razu zawęża grupę odbiorców (właśnie ostatnio wywaliłem wxString z projektu, bo bazowanie na stringach z GUI ma później niepotrzebny wpływ na projekt - np. niekompatybilną obsługę Unicode - w Wx). Ale jeśli to i tak przede wszystkim okienko to chyba jest OK.
Grupa odbiorców na wstępie jest zawężona do tych,co to biblioteki Qt używają,a im tam QString nie wadzi.Ponadto używam wewnętrznie duużo elementów kuteka,od QCoreApplication po model/view programming,a dojdzie do tego jeszcze kutowska obsługa wielowątkowości.
vpiotr napisał(a)
do dokumentacji kodu polecam doxygen - dokumentacja praktycznie sama wychodzi - przy okazji
Znam,używałem w pracy-imo nędza,a to potemu,że straszliwy burdel robi się w pliku .h z klasą i niełatwo jest w tym gąszczu wychwytywać definicje pól i metod,nawet przy kolorowaniu składni.Fakt,dokumentacja potem z tych komentarzy doxygenowych powstaje sama.
vpiotr napisał(a)
Licencja
Gdybyś dał BSD lub MIT to nie byłoby potrzeby zastanawiania się czy czasami gdzieś nie ma zwodniczego przecinka.
Nie jest to projekt opensourcowy,więc MIT i BSD nie przejdą.
vpiotr napisał(a)
Gdybyś chciał się odgryźć lub sprawdzić recenzenta to wystarczy zaguglać "vpiotr c++" - wszelkie uwagi chętnie przeczytam.
Za co mam się odgryzać to nie wiem,a co do moich uwag apropos Twojego wrappera:
1)Mam awersję to zapisów w stylu typedef list<coś>.Lubię jednak wiedzieć patrząc na definicję,że to na co patrzę to lista,czy mapa.Mam jednak świadomość,że dzięki typedefowi w niezwykle łatwy sposób zmienisz sobie używanie np z listy na wektor w całym projekcie zmieniając tylko tego typedefa
2)
static void calcMD5(const std::string &text, std::string &output);
przy tej metodzie zaliczyłem lekkie WTF?MD5 nic mi nie mówi,imo lepiej byłoby skrót rozwinąć,zwłaszcza że inne metody nie są zapisywane w tak kryptograficznej postaci