🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Ciemna strona C++

#267712
From: Sebastian Kaliszewski
Date: Fri, 23 Nov 2007 17:05
81 lines
4461 bytes
Maciej Sobczak wrote:
> Etam, Seweryn, dałeś się wkręcić. To jest Naciąganie Gaci Przez Głowę
> (tm).

Może i jest. A może nie... nie będę się kłócił.

> class ClassForNormalUse
> {
> public:
>     void doThis();
>     void doThat();
> };
> 
> class ClassWithAdditionalFeaturesForInitialization : public
> ClassForNormalUse
> {
> public:
>     void readConfigFiles();
>     void doSomethingSpecialAtTheBeginning();
> };
> 
> ClassForNormalUse & getIt()
> {
>     static ClassWithAdditionalFeaturesForInitialization x;
> 
>     x.readConfigFiles();
>     x.doSomethingSpecialAtTheBeginning();
> 
>     // ok, object is ready for normal use:
>     return x;
> }
> 
> // ...
> 
> ClassForNormalUse & x = getIt();
> 
> x.doThis();
> x.doThat();
> x.readConfigFiles(); // WTF? no such method (in compile-time!)
> 
> 
> Nie trzeba kasować metod ze słownika, żeby podzielić funkcjonalność
> czegoś na etapy.

Tylko, że ten podział, żeby być skutecznym, musi przebiegać po granicy 
wywoałania getIt(), co może być bardzo nienaturalne. Co gorsza getIt() można 
zawołać tysiące razy, również pod koniec działania programu. Nie masz tu 
żadnego nmechanizmu zabraniającego zastosowanie 
ClassWithAdditionalFeaturesForInitialization również w czasie absolutnie z 
inicjalizacją nie związanym.


Modyfikacja klasy przez usunięcie z niej metody zmienia typ. Czyli do pewnej 
chwili działania programu mamy jakiś typ, ale po tem jest już typ inny. I 
wszystkie (nawet tysiące) instancji typu pierwszego zostaje jednym 
pociągnięciem zamienionych w instancje typu drugiego (i np. stają się 
immutable).

Występowanie w programach zmiennych stałych, czyli obiektów które w czasie 
normalnego działania programu są stałymi, ale na jego początku muszą zostać 
zainicjowane na podstawie danych zewnętrznych.

> Wieloetapowość można naturalnie wyrazić ze statycznym systemem typów
> posługując się różnymi widokami na ten sam obiekt w różnych chwilach
> jego życia.

Ale musisz się zajmować każdym obiektem z osobna co jest uciążliwe. A tu 
mówimy o życiu całej aplikacji a nie jednego obiektu.

> I nie, nie trzeba tego opisywać jako "zagadnienie dla zaawansowanych",
> bo już samo to określenie pokazuje, że kasowanie metod to zwykłe
> Naciąganie Gaci Przez Głowę (tm).

To samo określenie nic nie pokazjue. Ale taka konstrukcja jest w Pythonie 
stosowana niezwykle rzadko. Zapewne dlatego, że dla normalnych ludzi 
wystarcza konwencja (np nazwa z samych wielkich liter oznacza stałą lub 
właśnie zmienną stałą). Wymuszanie czegoś takiego to pomysł bardziej 
ceplusplusiczny(tm) a nie pytoniczny.

pzdr
\SK
Technical Details
Message-ID: <fi70b4$8lg$1@bozon2.softax.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl> <fi1ot2$24s$1@bozon2.softax.pl> <fi20va$5ud$1@news.vectranet.pl> <fi45ok$g39$1@bozon2.softax.pl> <fi4m84$nme$1@news.vectranet.pl> <f15afef5-4a21-4ac2-8e62-cc0d9c5f71d1@b15g2000hsa.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!bozon.softax.com.pl!not-for-mail
From: Sebastian Kaliszewski <s@get.it.off.to.reply.informa.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Fri, 23 Nov 2007 18:05:31 +0100
Organization: Softax news server
Lines: 81
Message-ID: <fi70b4$8lg$1@bozon2.softax.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fgo4c7$mtu$1@news.vectranet.pl>  <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl>  <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl>  <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl>  <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl>  <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl>  <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl>  <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl>  <fhhfae$bj$1@news.vectranet.pl> <fi1ot2$24s$1@bozon2.softax.pl>  <fi20va$5ud$1@news.vectranet.pl> <fi45ok$g39$1@bozon2.softax.pl>  <fi4m84$nme$1@news.vectranet.pl> <f15afef5-4a21-4ac2-8e62-cc0d9c5f71d1@b15g2000hsa.googlegroups.com>
NNTP-Posting-Host: 83.18.189.42
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1195837265 842 83.18.189.42 (23 Nov 2007 17:01:05 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Fri, 23 Nov 2007 17:01:05 +0000 (UTC)
User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322)
X-Accept-Language: en-us, en
In-Reply-To: <f15afef5-4a21-4ac2-8e62-cc0d9c5f71d1@b15g2000hsa.googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit