Article View: alt.pl.comp.lang.csharp
Article #9691Re: bledy popelniane przez programistow C#
From: j_marek
Date: Sat, 05 Nov 2005 08:42
Date: Sat, 05 Nov 2005 08:42
57 lines
4311 bytes
4311 bytes
W wiadomości: 10eh9tp6f64pb.dlg@fdsvzxcc.rtb.com, Tomasz Kopacz <tkopacz@nospam.idg.com.pl> napisał(a): > On Wed, 02 Nov 2005 15:55:37 +0100, Marcin Grzębski wrote: > >> Jeśli "ja" chcę mieć _pole_publiczne_ w klasie to chcę mieć >> _pole_ , a nie własność. > > A możesz napisać dlaczego chcesz pole a nie własność? Bo "szybsze", bo > mniej pisania? Witam! Nie zawsze musi być publiczne, może być także protected albo internal. Dobrze mieć wybór. Poza tym jak słusznie zauważyłeś może być to też problem wydajność (programu). Jeśli taki polem będzie struktura można sobie zaoszczędzić kopiowania danych. Ponadto takie rozwiązanie umożliwia przekazanie pola jako argumentu typu ref i out. Także w pewnych sytuacjach dobrze jest mieć wybór. Czy to w przypadku dziedziczenia, czy to w przypadku prostszych formularzy gdzie czasem można sobie pozwolić na takie uproszczone rozwiązanie jak samo pole. I w dodatku oznacza to mniej kodu. Pole publiczne nie jest takie złe jak by się to mogło wydać. W ogromnej ilość przypadków nie ma potrzeby zmieniać wewnętrznej implementacji przechowywanych danych. Platforma .Net i kompilator za nas to załatwia dostarczając zestaw standardowych typów danych. Zatem te typy zapewniają już częściową hermetyzację -- ukrywają binarne szczegóły implementacji. Tracimy tylko kontrolę na tym, kiedy pole jest modyfikowane. Moim zdaniem są przypadki stosunkowo prostego kodu tworzonego w dużej ilości, w którego przypadku takie uproszczenie jest nawet pożądane. Co innego tworzenie wielokrotnie wykorzystywanych bibliotek -- wewnętrznego API projektów. Tu należy być bardziej rygorystycznym. W czasie dyskusji padł także argument GOTO. Sprawa jest opisana przez Donalda Knutha i zostało pokazane, że w pewnych sytuacjach zagnieżdżonych pętli GOTO upraszcza kod i czyni go bardziej czytelnym (O ile dobrze pamiętam źródło i argumenty). W C# GOTO zwykle jawnie się nie wykorzystuje, ale jest return, break i jeszcze inne instrukcje skoku. Jeśli nasz kod nie ma jednego wejścia i wyjścia to nie jest już w pełni strukturalny. Zatem pod tym względem retrun powinno się znajdować tylko na końcu metody. Warto te zasady znać aby tworzyć przejrzysty kod, który otworzony po kilku latach da się czytać. Ale przestrzeganie tych zasad tak wprost i bez refleksji moim zdanie także nie jest dobrym rozwiązaniem. Ponadto czasem niektóre zasady czy reguły mogą być dyskusyjne. Takie wrażenie odnoszę zwłaszcza w stosunku do inżynierii oprogramowania. Stosowane systemy są skomplikowane, nauka i wykorzystanie ich jest czasochłonna. A zyski z używania mocno dyskusyjne. -- Pozdrawiam, Marek Janaszewski [ j_marek(małpa)gazeta(kropka)pl ] [ == USUN_TO. z adresu == ]
Technical Details
Message-ID:
<dkhrkb$2hg6$1@news2.ipartners.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!nf1.ipartners.pl!news.ipartners.pl!ipartners.pl!not-for-mailReferences:
<1130508326.894711.153970@z14g2000cwz.googlegroups.com> <1eocwqzx1mywz$.dlg@piotr-wlodarek.pl> <dk4mhr$r5s$1@atlantis.news.tpi.pl> <4f5ksod9hocm.dlg@piotr-wlodarek.pl> <dk4t9e$pk5$1@inews.gazeta.pl> <crxbo9q0fdfi.dlg@piotr-wlodarek.pl> <dk5fb4$dmh$1@nemesis.news.tpi.pl> <13nmve9r1u93s$.dlg@piotr-wlodarek.pl> <dk7dd9$6rv$1@node1.news.atman.pl> <dka85j$mnh$1@nemesis.news.tpi.pl> <dkaa5t$1842$1@node3.news.atman.pl> <dkak1h$p1l$1@atlantis.news.tpi.pl> <10eh9tp6f64pb.dlg@fdsvzxcc.rtb.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!nf1.ipartners.pl!news.ipartners.pl!ipartners.pl!not-for-mail From: "j_marek" <j_marek@USUN_TO.gazeta.pl> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: bledy popelniane przez programistow C# Date: Sat, 5 Nov 2005 09:42:41 +0100 Organization: Internet Partners Lines: 58 Message-ID: <dkhrkb$2hg6$1@news2.ipartners.pl> References: <1130508326.894711.153970@z14g2000cwz.googlegroups.com> <1eocwqzx1mywz$.dlg@piotr-wlodarek.pl> <dk4mhr$r5s$1@atlantis.news.tpi.pl> <4f5ksod9hocm.dlg@piotr-wlodarek.pl> <dk4t9e$pk5$1@inews.gazeta.pl> <crxbo9q0fdfi.dlg@piotr-wlodarek.pl> <dk5fb4$dmh$1@nemesis.news.tpi.pl> <13nmve9r1u93s$.dlg@piotr-wlodarek.pl> <dk7dd9$6rv$1@node1.news.atman.pl> <dka85j$mnh$1@nemesis.news.tpi.pl> <dkaa5t$1842$1@node3.news.atman.pl> <dkak1h$p1l$1@atlantis.news.tpi.pl> <10eh9tp6f64pb.dlg@fdsvzxcc.rtb.com> NNTP-Posting-Host: 217.153.157.130 Mime-Version: 1.0 X-Trace: news2.ipartners.pl 1131180491 83462 217.153.157.130 (5 Nov 2005 08:48:11 GMT) X-Complaints-To: abuse@ipartners.pl NNTP-Posting-Date: 5 Nov 2005 08:48:11 GMT X-Priority: 3 X-Antivirus: avast! (VPS 0544-8, 2005-11-04), Outbound message X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670 X-Newsreader: Microsoft Outlook Express 6.00.2900.2670 X-MSMail-Priority: Normal X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit