🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.objects
23 messages
23 total messages Started by Przemek Pokrywka Fri, 23 Jun 2006 17:50
Tolerancja dla duplikacji kodu
#14795
Author: Przemek Pokrywka
Date: Fri, 23 Jun 2006 17:50
7 lines
1014 bytes
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ą?

Przemysław Pokrywka
Re: Tolerancja dla duplikacji kodu
#14796
Author: sg
Date: Fri, 23 Jun 2006 18:25
10 lines
1153 bytes
Przemek Pokrywka napisał(a):
> 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ą?
> 
> Przemysław Pokrywka

co??? ale o co chodzi?
Re: Tolerancja dla duplikacji kodu
#14797
Author: Przemek Pokrywka
Date: Fri, 23 Jun 2006 18:40
3 lines
965 bytes
sg napisał(a):
> co??? ale o co chodzi?
copy & paste programming
Re: Tolerancja dla duplikacji kodu
#14798
Author: sg
Date: Fri, 23 Jun 2006 19:07
6 lines
1123 bytes
Przemek Pokrywka napisał(a):
> sg napisał(a):
>> co??? ale o co chodzi?
> copy & paste programming

no i co? ile razy pozwalam sobie kopiować kod w programie???
Re: Tolerancja dla duplikacji kodu
#14799
Author: Grzegorz Danowski
Date: Fri, 23 Jun 2006 20:58
23 lines
1752 bytes
Użytkownik "sg" <alpha@skynet.org.pl_WITHOUT> napisał w wiadomości 
news:e7he68$nph$1@inews.gazeta.pl...
<cite>
> sg napisał(a):
>> co??? ale o co chodzi?
> copy & paste programming

no i co? ile razy pozwalam sobie kopiować kod w programie???

</cite>

Istnieje pewna zależność:

copy / paste = duplikowanie kodu = duplikowanie błędów = konieczność 
nanoszenie tych samych poprawek w wielu miejscach = problemy z utrzymaniem 
kodu

Z jednej strony nie ma sensu unikanie duplikowania poszczególnych 
instrukcji, z drugiej strony nie powinno się duplikować dużych komponentów. 
Przemek pytał zapewne gdzie jest Wasz złoty środek.

Pozdrawiam
Grzegorz 
Re: Tolerancja dla duplikacji kodu
#14801
Author: Seweryn Habdank-Wojewódzki
Date: Fri, 23 Jun 2006 21:06
21 lines
1361 bytes
Witam

Przemek Pokrywka wrote:

> 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ą?

Ustaliłbym luźną granice na 2 do 3, ale istotnie skomentowane dlaczego tak, a
nie inaczej i ile tego kodu jest skopiowane, bo jak dużo, to lepiej w cale nie
kopiować. Czasem odwołanie się gdzies daleko do kawałka kodu jest trudne. Więc
kopiowanie może mieć sens.

Pozdrawiam.

-- 

|\/\/|   Seweryn Habdank-Wojewódzki
`\/\/   
Re: Tolerancja dla duplikacji kodu
#14800
Author: Piotr Dembiński
Date: Sat, 24 Jun 2006 19:41
24 lines
1770 bytes
"Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> writes:

> Użytkownik "sg" <alpha@skynet.org.pl_WITHOUT> napisał w wiadomości
> news:e7he68$nph$1@inews.gazeta.pl...
> <cite>
>> sg napisał(a):
>>> co??? ale o co chodzi?
>> copy & paste programming
>
> no i co? ile razy pozwalam sobie kopiować kod w programie???
>
> </cite>
>
> Istnieje pewna zależność:
>
> copy / paste = duplikowanie kodu = duplikowanie błędów = konieczność
> nanoszenie tych samych poprawek w wielu miejscach = problemy 
> z utrzymaniem kodu
>
> Z jednej strony nie ma sensu unikanie duplikowania poszczególnych
> instrukcji, z drugiej strony nie powinno się duplikować dużych
> komponentów. Przemek pytał zapewne gdzie jest Wasz złoty środek.

Złoty środek leży zwykle tam, gdzie jego miejsce.
Re: Tolerancja dla duplikacji kodu
#14802
Author: A.L.
Date: Sat, 24 Jun 2006 21:28
15 lines
945 bytes
On Fri, 23 Jun 2006 19:50:10 +0200, Przemek Pokrywka
<adres@zastrzezony.com> wrote:

>Witam,
>
>Czy zdarzają się Państwu sytuacje, w których pozbycie się duplikacji 
>kodu jest niemożliwe?

Nie

>Ile duplikacji kodu w projekcie Państwo tolerują?

Zero

A.L.
Re: Tolerancja dla duplikacji kodu
#14803
Author: Przemek Pokrywka
Date: Sun, 25 Jun 2006 08:42
18 lines
1543 bytes
A.L. napisał:
>>Czy zdarzają się Państwu sytuacje, w których pozbycie się duplikacji 
>>kodu jest niemożliwe?
> 
> Nie
> 
>>Ile duplikacji kodu w projekcie Państwo tolerują?
> 
> Zero

Szczere wyrazy mojego uznania! A dla uzupełnienia:
- w jaki sposób wykrywacie Państwo duplikację kodu (narzędzie)?
- jaki próg czułości ma ustawione to narzędzie? Chodzi mi o liczbę 
znaczących identycznych tokenów, które muszą się powtórzyć, żeby 
narzędzie oznaczyło to jako duplikację - względnie o inną podobną miarę, 
jeśli użyty jest inny algorytm wykrywania duplikacji.

Przemysław Pokrywka
Re: Tolerancja dla duplikacji kodu
#14804
Author: A.L.
Date: Sun, 25 Jun 2006 14:42
33 lines
2167 bytes
On Sun, 25 Jun 2006 10:42:37 +0200, Przemek Pokrywka
<adres@zastrzezony.com> wrote:

>A.L. napisał:
>>>Czy zdarzają się Państwu sytuacje, w których pozbycie się duplikacji 
>>>kodu jest niemożliwe?
>> 
>> Nie
>> 
>>>Ile duplikacji kodu w projekcie Państwo tolerują?
>> 
>> Zero
>
>Szczere wyrazy mojego uznania! A dla uzupełnienia:
>- w jaki sposób wykrywacie Państwo duplikację kodu (narzędzie)?
>- jaki próg czułości ma ustawione to narzędzie? Chodzi mi o liczbę 
>znaczących identycznych tokenów, które muszą się powtórzyć, żeby 
>narzędzie oznaczyło to jako duplikację - względnie o inną podobną miarę, 
>jeśli użyty jest inny algorytm wykrywania duplikacji.
>

My nie jestesmy tacy sophisticated. My pracujemy w zacofanej Ameryce
i zadnych takich tooli nie wykorzystujemy. Toole kosztuje pieniadze
i zajmuja za duzo czasu. My to wykrywamy przy pomocy "code review".
Czyli "na oko".

A.L.

P.S. Wedle statystyk, USA traci rocznie okolo biliona
(amerykanskiego) dolarow na stratach zwiazanych z tym ze pracownicy
starannie dobieraja formaty w memorandach pisanych pod Wordem i
robieniu ladnych ramek w Excelu. Podejrzewam ze traci ze dwa razy
tyle (albo by tracila) na uzywaniu "tooli" wykrywajacych "tokeny"
Re: Tolerancja dla duplikacji kodu
#14806
Author: Przemek Pokrywka
Date: Sun, 25 Jun 2006 16:39
38 lines
3165 bytes
A.L. napisał(a):
>>- w jaki sposób wykrywacie Państwo duplikację kodu (narzędzie)?
>>- jaki próg czułości ma ustawione to narzędzie? Chodzi mi o liczbę 
>>znaczących identycznych tokenów, które muszą się powtórzyć, żeby 
>>narzędzie oznaczyło to jako duplikację - względnie o inną podobną miarę, 
>>jeśli użyty jest inny algorytm wykrywania duplikacji.
> 
> My nie jestesmy tacy sophisticated. My pracujemy w zacofanej Ameryce
> i zadnych takich tooli nie wykorzystujemy. Toole kosztuje pieniadze
> i zajmuja za duzo czasu. My to wykrywamy przy pomocy "code review".
> Czyli "na oko".

Uuuu Panie A.L. "na oko", to, jak się mówi "chłop w szpitalu umarł" - "z 
brudem za paznokciem" jak dodają niektórzy. Integracja toola do 
wykrywania duplikacji kodu w Mavenie to dopisanie linijki w project.xml 
i nie kosztuje to ani centa (maven i jego odpowiednie pluginy są za 
darmo). Potem całą pracę wykonuje build server (zazwyczaj po każdym 
check-in), co na ogół kosztuje ułamek procenta rachunku za energię 
elektryczną. Development i management mają za to na ładnej stronce 
webowej czytelne raporty o tym, co jest zduplikowane, w ilu kopiach i 
gdzie. To chyba pewniejsza i _mniej_ czasochłonna metoda, niż (skądinąd 
o wartości nie do podważenia) code reviews.

 > P.S. Wedle statystyk, USA traci rocznie okolo biliona
 > (amerykanskiego) dolarow na stratach zwiazanych z tym ze pracownicy
 > starannie dobieraja formaty w memorandach pisanych pod Wordem i
 > robieniu ladnych ramek w Excelu. Podejrzewam ze traci ze dwa razy
 > tyle (albo by tracila) na uzywaniu "tooli" wykrywajacych "tokeny"

Właśnie - proszę zwrócić uwagę, że w tej sytuacji to _pracownicy_ (a nie 
narzędzia typu Maven) dobierają te formaty. Realizacja danej czynności 
przez program komputerowy obniża te koszty praktycznie do zera.
Inna sprawa to koszta nadzoru nad takimi programami, ale i tak jestem 
zdania, że w konkretnym zastosowaniu wykrywania duplikacji kodu opłaca 
się je ponieść (skoro nie tolerują Państwo duplikacji kodu, to wie Pan 
raczej dlaczego).

Przemysław Pokrywka
Re: Tolerancja dla duplikacji kodu
#14805
Author: A.L.
Date: Sun, 25 Jun 2006 20:46
42 lines
2753 bytes
On Sun, 25 Jun 2006 18:39:55 +0200, Przemek Pokrywka
<adres@zastrzezony.com> wrote:
 
>
>Uuuu Panie A.L. "na oko", to, jak się mówi "chłop w szpitalu umarł" - "z 
>brudem za paznokciem" jak dodają niektórzy. Integracja toola do 
>wykrywania duplikacji kodu w Mavenie to dopisanie linijki w project.xml 
>i nie kosztuje to ani centa (maven i jego odpowiednie pluginy są za 
>darmo). Potem całą pracę wykonuje build server (zazwyczaj po każdym 
>check-in), co na ogół kosztuje ułamek procenta rachunku za energię 
>elektryczną. Development i management mają za to na ładnej stronce 
>webowej czytelne raporty o tym, co jest zduplikowane, w ilu kopiach i 
>gdzie. To chyba pewniejsza i _mniej_ czasochłonna metoda, niż (skądinąd 
>o wartości nie do podważenia) code reviews.
>

Wie Pan, my chyba inne programy piszemy, w inny sposob i w innym
srodowisku...

>
>Właśnie - proszę zwrócić uwagę, że w tej sytuacji to _pracownicy_ (a nie 
>narzędzia typu Maven) dobierają te formaty. Realizacja danej czynności 
>przez program komputerowy obniża te koszty praktycznie do zera.
>Inna sprawa to koszta nadzoru nad takimi programami, 

Jaka "inna sprawa"?... Jak dla mnei to raczej fundamentalna. No, ael
Ameryka nie ejst tak bogata jak Polska i liczy kazdy grosz...
eche... cent, chcialem powiedziec.

>ale i tak jestem 
>zdania, że w konkretnym zastosowaniu wykrywania duplikacji kodu opłaca 
>się je ponieść (skoro nie tolerują Państwo duplikacji kodu, to wie Pan 
>raczej dlaczego).

No wlasnie,. Kolejny raz przodujaca technologicznie Polska dala w
dupe zacofanej Ameryce.

A.L.

P.S> Przypomina mi sie moj patent na urzadzenie do zbierania jagod:
akumulator i silny elektromagnes. Tylko przedtem trzeba w kazda
jagode wbic cienka stalowa szpilke.
Re: Tolerancja dla duplikacji kodu
#14809
Author: Grzesiek G.
Date: Mon, 26 Jun 2006 09:10
12 lines
1243 bytes
Przemek Pokrywka napisał(a):
> 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ą?

Ja staram się mieć co najwyżej jeden duplikat.

-- 
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!
Re: Tolerancja dla duplikacji kodu
#14810
Author: A.L.
Date: Mon, 26 Jun 2006 19:13
15 lines
1158 bytes
On Mon, 26 Jun 2006 11:10:23 +0200, "Grzesiek G."
<gruza@spamerom_nie.priv4.onet.pl> wrote:

>Przemek Pokrywka napisał(a):
>> 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ą?
>
>Ja staram się mieć co najwyżej jeden duplikat.

A dlaczego nie dwa?...

A.L.
Re: Tolerancja dla duplikacji kodu
#14807
Author: Przemek Pokrywka
Date: Mon, 26 Jun 2006 19:47
32 lines
2782 bytes
A.L. napisał(a):
> P.S> Przypomina mi sie moj patent na urzadzenie do zbierania jagod:
> akumulator i silny elektromagnes. Tylko przedtem trzeba w kazda
> jagode wbic cienka stalowa szpilke.

Pański przypis bardzo dobrze obrazuje niebezpieczeństwo nadmiernego 
skupienia się na narzędziach, do tego stopnia, że stają się one celem 
samym w sobie :-)

Wydaje mi się jednak, że amerykańscy współautorzy omawianych narzędzi 
zgodzą się z moim twierdzeniem, że cały nadzór nad narzędziem typu 
detektor duplikacji sprowadza się do jego jednorazowego set-upu oraz do 
ewentualnego wykluczania niektórych fragmentów kodu spod jego kontroli 
od czasu do czasu. Jest to moim skromnym zdaniem nakład pracy 
niepomiernie mniejszy, i dający lepsze efekty, niż przeprowadzanie w tym 
celu code reviews.
Jasna sprawa, że do wykrywania duplikacji nigdy nie urządza się 
specjalnych code reviews - wykrywanie duplikacji jest raczej ich efektem 
ubocznym. Jednak m.in. właśnie dlatego narzędzia typu Simian lub CPD 
mają swoją niszę, bo dzięki nim można zidentyfikować miejsca, które 
normalnie zostałyby przeoczone, a usunięcie z nich duplikacji może 
przynieść wymierne zyski.

Jestem sobie jednak w stanie wyobrazić, że temat ten może wyglądać 
diametralnie inaczej, gdy używa się innych narzędzi, metod i środowisk.

Pozwolę sobie tu przy tym na małą reklamę Mavena, jako że jest to 
narzędzie, które zapewnia długoterminowy zwrot z inwestycji. Miałem 
szczęście trafić do zespołu, który go używa i doświadczam na codzień 
zalet jego stosowania.

Przemysław Pokrywka
Re: Tolerancja dla duplikacji kodu
#14811
Author: ciukes
Date: Mon, 26 Jun 2006 20:37
19 lines
1429 bytes
A.L. wrote:
> On Mon, 26 Jun 2006 11:10:23 +0200, "Grzesiek G."
> <gruza@spamerom_nie.priv4.onet.pl> wrote:
> 
>> Przemek Pokrywka napisał(a):
>>> 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ą?
>> Ja staram się mieć co najwyżej jeden duplikat.
> 
> A dlaczego nie dwa?...
> 
> A.L.
ten jeden chowa do sejfu wrazie gdyby oryginal ulegl uszkodzeniu;)

Pozdrawiam,
ciukes.
Re: Tolerancja dla duplikacji kodu
#14808
Author: Sektor van Skijlen
Date: Tue, 27 Jun 2006 14:53
112 lines
6768 bytes
Dnia Sun, 25 Jun 2006 15:46:30 -0500, A.L. skrobie:
> On Sun, 25 Jun 2006 18:39:55 +0200, Przemek Pokrywka
> <adres@zastrzezony.com> wrote:
>  
> >
> >Uuuu Panie A.L. "na oko", to, jak się mówi "chłop w szpitalu umarł" - "z 
> >brudem za paznokciem" jak dodają niektórzy. Integracja toola do 
> >wykrywania duplikacji kodu w Mavenie to dopisanie linijki w project.xml 
> >i nie kosztuje to ani centa (maven i jego odpowiednie pluginy są za 
> >darmo). Potem całą pracę wykonuje build server (zazwyczaj po każdym 
> >check-in), co na ogół kosztuje ułamek procenta rachunku za energię 
> >elektryczną. Development i management mają za to na ładnej stronce 
> >webowej czytelne raporty o tym, co jest zduplikowane, w ilu kopiach i 
> >gdzie. To chyba pewniejsza i _mniej_ czasochłonna metoda, niż (skądinąd 
> >o wartości nie do podważenia) code reviews.
> >

> Wie Pan, my chyba inne programy piszemy, w inny sposob i w innym
> srodowisku...

Pan to najwyraźniej w ogóle piszesz "inne programy".

Automatyzację za pomocą narzędzi wykonuje się wszędzie. A jeśli mówisz pan o
robieniu czegokolwiek "na oko" i jednocześnie twiedzisz pan, że masz pan 100%
skuteczność, to pan się delikatnie mówiąc lekko rozmijasz z rzeczywistością.

Zgodzę się skądinąd, że większość narzędzi do weryfikacji kodu, wszelkie
makkejby i klocworki są w dużej mierze o kant dupy rozbić (a kosztują
wściekle). I owszem, nie ma takiego narzędzia, które zastąpiłoby trzeźwo
myślącego inżyniera, kierownika technicznego, który przejrzy kod i potrafi
trafnie zawyrokować, że to jest napisane dobrze, a to jest napisane źle i
trzeba przepisać. Gdyby istniało, dziś programy pisałoby się za pomocą kilku
kliknięć przez przysłowiową sekretarkę, a programistów wysłanoby na zieloną
trawkę, bo przecież niezależnie od tego ile by kosztowały te najwypasieńsze i
najdroższe narzędzia, programista i tak kosztuje o wiele więcej.

> >Właśnie - proszę zwrócić uwagę, że w tej sytuacji to _pracownicy_ (a nie 
> >narzędzia typu Maven) dobierają te formaty. Realizacja danej czynności 
> >przez program komputerowy obniża te koszty praktycznie do zera.
> >Inna sprawa to koszta nadzoru nad takimi programami, 

> Jaka "inna sprawa"?... Jak dla mnei to raczej fundamentalna.

Nie rozśmieszaj pan.

Uczestniczyłem w tworzeniu różnych narzędzi wspomagających pracę, więc z
autopsji wiem, ile kosztuje ich maintenance. Proszę sobie wyobrazić,
przykładowo, że przez okres jednego miesiąca programista tworzy narzędzie
przez 30% swojego czasu, a po jego wypuszczeniu poświęca 5% czasu miesięcznie
na jego maintenance.

A teraz proszę sobie policzyć następujące rzeczy:
1. Dzięki temu narzędziu, 100 programistów (na 500 w całej firmie) oszczędza
5% swojego czasu. To znaczy, może poświęcić 5% więcej czasu na aktywności
związane z bieżącą pracą. I to przez okres co najmniej 6 miesięcy od momentu
ukończenia tworzenia narzędzia.
2. Dzięki temu narzędziu skrócił się czas oczekiwania na ukończenie pewnych
aktywności, od których zależy praca pozostałych ludzi.
3. I wreszcie, narzędzie pozwoliło zmniejszyć ilość błędów powstających
podczas tych czynności z 30% do 2%.

Policz sobie pan teraz, ile co kosztuje. W pieniądzach.

> No, ael
> Ameryka nie ejst tak bogata jak Polska i liczy kazdy grosz...
> eche... cent, chcialem powiedziec.

Jasne. Nie kupujmy nowej pralki, bo ona przecież kosztuje straszne pieniądze,
a liczy się każdy grosz. Przecież można prać ręcznie.

Gdyby każdy myślał tak jak pan, Ameryka by nigdy nie powstała.

> >ale i tak jestem 
> >zdania, że w konkretnym zastosowaniu wykrywania duplikacji kodu opłaca 
> >się je ponieść (skoro nie tolerują Państwo duplikacji kodu, to wie Pan 
> >raczej dlaczego).

> No wlasnie,. Kolejny raz przodujaca technologicznie Polska dala w
> dupe zacofanej Ameryce.

Zacofany to pan jesteś, a nie (na szczęście) Ameryka. Jeśli masz pan
wątpliwości, to przypomnę parę drobnostek:

1. Ponad 50% największych i zajmujących największe obszary światowego rynku
oprogramowania firm softwarowych w Polsce to są firmy-córki utworzone przez
firmy ze Stanów Zjednoczonych.

2. Sposoby zarządzania tą firmą, metodyki procesów i inne pierdoły zostały
wymyślone i opracowane w Stanach i wyłącznie stamtąd zostały zaszczepione w
Polsce.

3. Używanie różnych narzędzi do wspomagania pracy (i to dowolnej branży) to
kwestia decyzji firmy macierzystej, a jej polski oddział dostosowuje się do
tego na zasadzie decyzji, która przyszła z góry. W przypadku przynajmniej
różnych kosztownych narzędzi (jak ClearCase, czy Klocwork) decyzje przychodzą
wyłącznie od góry i firma w Polsce nie ma w ogóle nic w tej kwestii do
powiedzenia.

Nie wykluczam, że jeśli chodzi o sprawy zarówno narzędzi, jak i metodyk
(zwłaszcza Agile), to można na upartego określić to tak, że amerykański
oddział testuje te sprawy na polskich oddziałach jak na myszach.

Można by oczywiście zadać pytanie, dlaczego testują to na Polsce, a nie na
znacznie tańszych Chinach. Odpowiedź prosta: w Polsce te testy najczęściej
przechodzą z sukcesem, w Chinach nie.


-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethouris(O)gmail.com>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Tolerancja dla duplikacji kodu
#14813
Author: Grzesiek G.
Date: Tue, 27 Jun 2006 14:56
34 lines
2111 bytes
A.L. napisał(a):
> On Mon, 26 Jun 2006 11:10:23 +0200, "Grzesiek G."
> <gruza@spamerom_nie.priv4.onet.pl> wrote:
> 
> 
>>Przemek Pokrywka napisał(a):
>>
>>>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ą?
>>
>>Ja staram się mieć co najwyżej jeden duplikat.

Teraz jak czytam swoją wypowiedź, to widzę, że wyszła bez sensu. Bo 
chodziło mi o to, że staram się nie mieć. Ale jak jest jeden, to nie 
zabieram się od razu do refaktoryzacji, chyba, że przypadek jest ewidentny.

 >
 >
 > A dlaczego nie dwa?...

A jeden, a nie dwa, wynika z doświadczenia. Jak kiedyś starałem się nie 
mieć wogóle, to miałem tendecję do wyodrębniania kodu "na siłę". Potem 
okazywało się, że jednak ten wyodrębniony kod powinien wyglądać inaczej 
w dwóch miejscach. Albo, że wyodrębnianie stawało się celem samym w 
sobie. Stąd ten jeden duplikat.

Pozdrawiam

-- 
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!
Re: Tolerancja dla duplikacji kodu
#14812
Author: Grzesiek G.
Date: Tue, 27 Jun 2006 14:58
31 lines
1792 bytes
ciukes napisał(a):
> A.L. wrote:
> 
>> On Mon, 26 Jun 2006 11:10:23 +0200, "Grzesiek G."
>> <gruza@spamerom_nie.priv4.onet.pl> wrote:
>>
>>> Przemek Pokrywka napisał(a):
>>>
>>>> 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ą?
>>>
>>> Ja staram się mieć co najwyżej jeden duplikat.
>>
>>
>> A dlaczego nie dwa?...
>>
>> A.L.
> 
> ten jeden chowa do sejfu wrazie gdyby oryginal ulegl uszkodzeniu;)

Pod tym względem (kopie zapasowe) dopuszczam znacznie więcej duplikatów. 
Czyżbym dał nieprzemyślaną odpowiedź :-).

Pozdrawiam

-- 
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!
Re: Tolerancja dla duplikacji kodu
#14815
Author: Sektor van Skijlen
Date: Tue, 27 Jun 2006 19:10
71 lines
4767 bytes
Dnia Fri, 23 Jun 2006 19:50:10 +0200, Przemek Pokrywka skrobie:
> Witam,

> Czy zdarzają się Państwu sytuacje, w których pozbycie się duplikacji 
> kodu jest niemożliwe?

Ja się osobiście nie spotkałem z sytuacją, żeby usunięcie duplikatów było
niemożliwe. Ale spotkałem się z sytuacją, gdy jest nieopłacalne.

> Ile duplikacji kodu w projekcie Państwo tolerują?

W przypadku, gdy pytanie jest o to, ile duplikatów pozostawiłbym w miarę
wszelkich możliwości w kodzie, moja odpowiedź brzmi: zero.

Pytanie to jest jednak niekonkretne z dwóch powodów:

1. Co to jest duplikat? No bo weźmy sobie taki przykład (akurat z mojej
praktyki):
Mamy strukturę "charakterystyczną", czyli opisującą charakterystyczne dane
jakiejś wielkiej tabeli (tabela ma bardzo ścisłe podziały, rozmiary,
indeksacje, sposób translacji danych pomiędzy poziomami itd.). Chodzi o to,
żeby dane charakterystyczne z tej tabeli wystarczyły do generycznego opisania
sposobu aktualizacji zawartości tabeli, a także przenoszenia wartości pomiędzy
poziomami i generacji raportu.

I teraz: nie ukrywam, że nawet sam wpadłem na ten pomysł, żeby wszystkie
"facility" dotyczące konkretnej tabeli (początkowo było ich 5) wrzucić do
osobnego pliku i tam również zawierała się funkcja inicjalizująca obiekt
charakterystyczny tej tabeli. Ponieważ każdy taki obiekt był typu tej samej
struktury, więc funkcja inicjalizująca obiekt charakterystyczny w każdym pliku
wyglądała niemal identycznie, co najwyżej tylko niektóre dane się różniły.

I co teraz? Czy w takim razie jedna z tych funkcji inicjalizujących jest
duplikatem pozostałych?

Inny przykład: mamy funkcję, która jest handlerem komendy. Tak się przypadkiem
złożyło, że dwie komendy przyjmują identyczny zestaw argumentów, tyle że robią
inne rzeczy. Czynność podejmowana przez te komendy jest bardzo prosta, w
uproszczeniu powiedzmy, że chodzi o wywołanie jednej funkcji (tyle że innej).
Argumenty przed podaniem muszą być odpowiednio dostosowane (przekonwertowane
itd.), więc wszystko to, co robią oba te handlery to jest zebranie i
przekonwertowanie argumentów oraz wywołanie odpowiedniej funkcji. Czyli te dwa
handlery komend, poza tym, że wywołują inną funkcję, nie różnią się niczym.
Zatem: są duplikatami, czy nie są?

Jeszcze inny przykład: mamy 10 funkcji wykonujących dokładnie to samo,
mianowicie pobierających komunikaty z kolejki, przetwarzających je
odpowiednio, konwertujących różne pierdoły... no i potem mamy switch/case,
który to dispatchuje na handlery. Z tym tylko, że ten switch/case stanowi
średnio 80% każdej funkcji. Czy te funkcje są duplikatami, czy nie?

W tej kwestii przychylałbym się do stwierdzenia p. Lewandowskiego, że jednak
duplikaty lepiej ocenia się "na oko". Ale powtórzę, nie wiem po raz który:
narzędzia nie służą do tego, żeby rządzić tym, co mają zrobić programiści.
Narzędzia mają za zadanie pokazać, unaocznić, przypomnieć, podpowiedzieć;
NIGDY zdecydować za człowieka. Narzędzia nie powinny także być częścią
polityki firmy.

2. Jeśli już stwierdziliśmy jakieś duplikaty kodu, to czy wskazany kod
rzeczywiście powinien zostać zastąpiony wersją generyczną? Inaczej, czy
opracowywanie generyzmu dla wskazanego kodu jest robotą na tyle zyskowną, że
warto się tym kodem w ogóle zajmować? Jest taka zasada: "nie należy grzebać w
starym gównie, bo zacznie śmierdzieć".



-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethouris(O)gmail.com>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Tolerancja dla duplikacji kodu
#14814
Author: Seweryn Habdank-Wojewódzki
Date: Wed, 28 Jun 2006 10:55
22 lines
1457 bytes
Witam

Grzesiek G. wrote:

> Albo, że wyodrębnianie stawało się celem samym w
> sobie. 

Właśnie dlatego dopuszczam dwa lub czasem trzy, jeśli separacja powoduje
znaczny spadek wydajności, szczególnie 3 może być przy małych wrednych
kawałkach kodu pracujących na wielu parametrach w bardzo odległych fragmętach
kodu gdzie o separację ciężko.

> Stąd ten jeden duplikat. 

Stąd oryginał, duplikat i czasami 3 duplikat.

Pozdrawiam.

-- 

|\/\/|   Seweryn Habdank-Wojewódzki
`\/\/   
Re: Tolerancja dla duplikacji kodu
#14816
Author: Piotr Dembiński
Date: Wed, 28 Jun 2006 20:08
24 lines
1811 bytes
Sektor van Skijlen <ethouris@guess.if.gmail.com.is.valid.or.invalid> writes:

> Dnia Fri, 23 Jun 2006 19:50:10 +0200, Przemek Pokrywka skrobie:
>> Witam,
>
>> Czy zdarzają się Państwu sytuacje, w których pozbycie się
>> duplikacji kodu jest niemożliwe?
>
> Ja się osobiście nie spotkałem z sytuacją, żeby usunięcie 
> duplikatów było niemożliwe. Ale spotkałem się z sytuacją, 
> gdy jest nieopłacalne.

Podobnie jak (czasami) usuwanie błędów.  

TSD to właśnie zetknąłem się z tym problemem od strony użytkownika
oprogramowania: zakupiony za $15 program do zliczania czasu ma kilka
paskudnych błędów, których producent prawdopodobnie nie ma zamiaru
usunąć ze względu na nieopłacalność poprawiania.

-- 
http://www.piotr.dembiński.prv.pl

'Giving people a dynamically-typed language does not mean that they write
dynamically-typed programs.'  John Aycock, 'Aggressive Type Inference'
Re: Tolerancja dla duplikacji kodu
#14817
Author: 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. 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads