🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309019

Re: [ann] IniParser

#309019
From: (fir)
Date: Sun, 05 Feb 2017 10:18
57 lines
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 &sectStr);
	bool keyExists(const string &sectStr, const string &keyStr);
	vector<string> readSections();
	vector<string> readSectionKeys(const string &sectStr);
	vector<pair<string, string>> readSectionPairs(const string &sectStr);
	unordered_map<string, string> readSectionMap(const string &sectStr);
	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-mail
References: <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