🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #9691

Re: bledy popelniane przez programistow C#

#9691
From: j_marek
Date: Sat, 05 Nov 2005 08:42
57 lines
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-mail
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>

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