Article View: pl.comp.lang.c
Article #309019Re: [ann] IniParser
From: (fir)
Date: Sun, 05 Feb 2017 10:18
Date: Sun, 05 Feb 2017 10:18
57 lines
4058 bytes
4058 bytes
W dniu środa, 1 lutego 2017 09:24:35 UTC+1 użytkownik Borneq napisał: > Skonstruowałem niewielką ale fajną klasę do plików ini. Można między > innymi wczytywać zawartość sekcji do wektora kluczy, do wektora par > klucz:wartość a nawet do mapy kluczu:wartość. > Klasa obsługuje nie tylko odczyt ale i zapis, przy czym gdy ręcznie > napiszemy ini, a potem coś zapiszemy, to nie psuje nam kolejności a > nawet nie psuje nam komentarzy zamieszczanych w ini. > Można czytać wartości tak, że w przypadku nie wystąpienia będzie > wyjątek, albo funkcje ..Def które podadzą domyślną wartość. > Licencja MIT. > link: https://github.com/borneq/IniParser > > Pozdrawiam dla mnie ok, [ jak na c++ ;o ] dosyc czytelne jesli chodzi o powierzchnie kodu (co do samej mechaniki to sie nie wczytywalem ale pewnie tez z grubsza ok) [w sumie to mozna mowic o trzech warstwach bo jeszcze dochodzi "kompozycja interfejsu" czy podobna, to ew troche kuleje o czym nizej] pewien bład to te nazwy z z Def na końcu, troszeczke tez kompozycja (kolejnosc deklaracji i funkcji w kodzie moglabybyc chyba lepsza mozna sie tez pewnie nieco przyczepic do nazw - nazwy powinny byc raczej pisane dla czytalnika kodu a nie dla jego tworcy - tj nie powinny chyba zakladac ze czytelnik wie co kod robi, pisarz nieststy wie i te nazwy pisze jakby pod siebie - wtedy czytelnik musi dedukowac co to wlasciwie robi i to zajmuje troche czasu - tutaj akurat kod jest jasny i maly ogolnie wiadomo co robi tak ze da sie wydedukowac w stosunkowo krotkim czasie ale jednak moglobybyc to chyba nieco lepiej dla przykladu czy nie za duzo tu funkcji publicznych ? ktore z tych musza byc publiczne a ktore raczej prywatne: IniParser(const string &filename, bool mustExist); ~IniParser(); void beginUpdate(); void endUpdate(); void reload(bool mustExist); void clearAll(); bool sectionExists(const string §Str); bool keyExists(const string §Str, const string &keyStr); vector<string> readSections(); vector<string> readSectionKeys(const string §Str); vector<pair<string, string>> readSectionPairs(const string §Str); unordered_map<string, string> readSectionMap(const string §Str); static string mapValue(unordered_map<string, string> map, const string &key); static string mapValueDef(unordered_map<string, string> map, const string &key, const string &def); czy user tego obiektu moze recznie operowac na tych zwroconych mapach (w sensie pisania) czy raczej tylko do odczytu czy raczej nie powinien wogole? pozatym to styl c++ ja nie pisze w c++ i dla mnie c++ jest co nieco crazy ale pominawszy to styl samego kodu dosyc ok
Technical Details
Message-ID:
<d85f1f6f-0153-479f-bb76-068eac9ef532@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!q58no879562qte.0!news-out.google.com!78ni9794itm.0!nntp.google.com!r185no1414618ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<o6s602$nca$1@node2.news.atman.pl>Show Full Headers
Complete Article Headers
X-Received: by 10.129.74.11 with SMTP id x11mr1203898ywa.83.1486289906434; Sun, 05 Feb 2017 02:18:26 -0800 (PST) X-Received: by 10.157.18.211 with SMTP id g77mr301350otg.14.1486289906392; Sun, 05 Feb 2017 02:18:26 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!q58no879562qte.0!news-out.google.com!78ni9794itm.0!nntp.google.com!r185no1414618ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Sun, 5 Feb 2017 02:18:25 -0800 (PST) In-Reply-To: <o6s602$nca$1@node2.news.atman.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.148; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN NNTP-Posting-Host: 5.172.255.148 References: <o6s602$nca$1@node2.news.atman.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <d85f1f6f-0153-479f-bb76-068eac9ef532@googlegroups.com> Subject: Re: [ann] IniParser From: "(fir)" <profesor.fir@gmail.com> Injection-Date: Sun, 05 Feb 2017 10:18:26 +0000 Lines: 73 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit