[nem-pl] Kolejne uwagi/pytania
Michal Moskal
malekith at pld-linux.org
Sun Jun 20 23:33:56 CEST 2004
On Sun, Jun 20, 2004 at 11:14:03PM +0200, rzyjontko wrote:
> To może na początek coś prostszego? Np. wywoływanie konstruktora z
> konstruktora? Ja czekam na tego feature'a już jakiś czas (bug ma id
> 60) i chyba nie zanosi się na to, żeby był zrobiony.... a to trochę
> wstyd... czy nie?
Zanosi się, przed 0.2. Podobnie jak base.Foo() etc. Sorry, że to tak
długo trwa, ale to jest dość złożone, ponieważ, żeby to zrobić dobrze
trzeba sprawdzać czy argumenty przekazywane do konstruktora nie gwałcą
pewnych reguł (np. nie odnoszą się do nie zainicjowanych jeszcze pól
klasy), ponieważ to powoduje nieweryfikowalność kodu. Niestety to
wszystko dodatkowo gryzie się ze sposobem generacji kodu.
> A jak już poradzicie sobie z rozstrzyganiem, czy pole nie jest
> ustawiane 2 razy, to wtedy możliwość inicjowania wartości pola w
> innych metodach to powinien być pikuś, czy się mylę?
A co jest złego w podwójnej inicjalizacji? (Pozatym, że jeśli występuje
to pewnie, ale analiza tego wydaje się mocno nierozstrzygalna, w
szczególności nie widzę jakieś sensownej statycznej konserwatywnej
estymacji).
Zresztą trzeba by się zastanowić czy nasze mutable ma się tłumaczyć na
initonly (w IL, readonly w C#). Pola initonly można ustawiać *tylko*
w konstruktorze. I to na etapie IL, czyli np. lokalna funkcja się nie
kwalifikuje.
> Poza tym dobry styl programowania nakazuje rozbijanie dużych funkcji
> na mniejsze, które robią mniej, ale wiedzą co robią. Ja osobiście nie
> chciałbym mieć konstruktora, który ustawia wszystkie pola klasy, tylko
> może wolałbym pewne rzeczy zrobić w funkcjach prywatnych wywoływanych
> tylko z konstruktora?
Hm.. Takie funkcje [Init] czy coś. Fajne :-)
> A tak przy okazji, to chciałem zwrócić uwagę, żebyście przy
> porównywaniu nemerle i C# byli trochę bardziej obiektywni i pokazali
> ludziom, że:
Done. BTW, na przyszłość możesz się nie krępować i poprawić samemu :)
--
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: ::: Logic is a nice contrast to the Real World. :: UL++++$ C++ E--- a?
More information about the devel-pl
mailing list