🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #14817

Re: Tolerancja dla duplikacji kodu

#14817
From: Filip Sielimowicz
Date: Wed, 05 Jul 2006 18:27
56 lines
3445 bytes
Użytkownik "Przemek Pokrywka" <adres@zastrzezony.com> napisał w wiadomości 
news:e7h9l6$1pq$1@news.onet.pl...
> Witam,
>
> Czy zdarzają się Państwu sytuacje, w których pozbycie się duplikacji kodu 
> jest niemożliwe?
> Ile duplikacji kodu w projekcie Państwo tolerują?

Powiem odrobinę z mojej praktyki na temat redundancji funkcjonalności
(nie jest to jeszcze "duplikacja kodu", no ale mamy dwie funkcje, które 
robią to samo
- choć mogą być inaczej zaimplementowane - i raczej nie powstają na zasadzie 
copy-paste).

Generalnie kod w dużym projekcie dzielę na dwa obszary: kod wynikający 
bezpośrednio
ze specyfikacji i projektu, czyli "kod przewidziany" oraz kod wynikający z
"bieżących potrzeb programisty", czyli kod tworzony przez programistę w 
związku z
jego indywidualnymi zmaganiami przy podejściu do jakiegoś większego problemu
(funkcje i klasy narzędziowe, pomocnicze, rozbicia funkcji wyspecyfikowanych 
na
mniejsze elementy itp). Praktyka jest taka: na poziomie specyfikacji i 
projektu
nie powinno być redundancji, stąd nie powinno być redundancji w funkcjach
z obszaru pierwszego. Dużą część odpowiedzialność za poprawność logiczną 
tego
obszaru biorą analitycy. Natomiast jeśli chodzi o obszar drugi - bywa wręcz 
odwrotnie.
Jest prosta zasada: nie korzystaj z cudzego kodu (bezpośrednio, czyli przez 
wywołanie),
jeśli nie został on zaplanowany. A dlaczego ? Dlatego, że w praktyce własne 
funkcje
różnych programistów są słabo opisane (udokumentowane) i generalnie ich 
autor bierze
odpowiedzialność za poprawne ich działanie w całości, a nie jako 
pojedynczych, wyrwanych
z kontekstu elementów. Autor ma też prawo te funkcje modyfikować i rozwijać 
mając na
uwadze SWOJE potrzeby a nie potrzeby innych programistów.
Dzięki takiemu postawieniu sprawy powstaje redundancja, ale minimalizujemy 
problem
rozmycia odpowiedzialności za działanie większych elementów, szczególnie w 
obliczy
wprowadzanych licznie zmian.
Oczywiście w tle funkcjonuje proces wynoszenia funkcji narzędziowych do
specyfikacji/projektu lub czegoś co funkcjonuje na pograniczu (dobrze 
opisane
typowe funkcje narzędziowe), jeśli redundancja zaczyna zbytnio kłuć w oczy 
lub z innych
powodów. Generalnie zawsze trzeba brać pod uwagę problem: kto ma brać 
odpowiedzialność
za porządek i stabilność elementów współdzielonych oraz analizować jakie 
zmiany w tych
elementach są bezpieczne. 
Technical Details
Message-ID: <e8h0as$4u3$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!news.onet.pl!not-for-mail
References: <e7h9l6$1pq$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!news.onet.pl!not-for-mail
From: "Filip Sielimowicz" <sielim@poczta.onet.pl>
Newsgroups: pl.comp.objects
Subject: Re: Tolerancja dla duplikacji kodu
Date: Wed, 5 Jul 2006 20:27:40 +0200
Organization: Onet.pl
Lines: 57
Message-ID: <e8h0as$4u3$1@news.onet.pl>
References: <e7h9l6$1pq$1@news.onet.pl>
NNTP-Posting-Host: host-81-190-90-226.gdynia.mm.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1152124060 5059 81.190.90.226 (5 Jul 2006 18:27:40 GMT)
X-Complaints-To: usenet@news.onet.pl
NNTP-Posting-Date: Wed, 5 Jul 2006 18:27:40 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
X-Sender: HWuT3ZQ16+B3O4dnsZlCZgocIOkeW3FM
X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
X-Priority: 3
X-MSMail-Priority: Normal
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit