Article View: pl.comp.objects
Article #14817Re: Tolerancja dla duplikacji kodu
From: Filip Sielimowicz
Date: Wed, 05 Jul 2006 18:27
Date: Wed, 05 Jul 2006 18:27
56 lines
3445 bytes
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-mailReferences:
<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