-
Data: 2012-05-10 10:56:05
Temat: Re: 'abstrakcje' a zwartosc
Od: zażółcony <r...@c...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2012-05-10 02:13, Andrzej Jarzabek pisze:
> On 09/05/2012 16:30, zażółcony wrote:
>>
>> Imo to nie tak ...
>> Tworzenie abstrakcji to nie żadne czary-mary, które sprawiają,
>> że w jednej linijce kodu implementujesz wiele wymagań użytkownika.
>> Jest wiele wymagań - będzie dużo kodu. Chyba że ...
>
> Akurat języki się potrafić dość znacznie tym, jak zwięzły kod można w
> nich pisać, tylko że nie ma to wiele wspólnego ani z wysokopoziomowością
> języka, ani z abstrakcją w kodzie.
>
> Java na przykład jest językiem wysokopoziomowym, a jest mocno rozwlekła.
>
>> Chyba że są to wymagania 'powszechne' a nie specyficzne, zwiazane
>> n. z modą na to, by okienka wyglądały tak samo. Wtedy ktoś Ci
>> to zrobi i powie, jak masz to użyć.
>
> Ale też chyba nie jest takie rzadkie, żeby abstrakcja redukowała ilośc
> kodu przez unikanie zduplikowania. Tyle że z drugiej strony ta sama
> abstrakcja potrafi też zwiększyć ogólną ilość kodu, i według mnie
> średnio raczej zwiększa, niż zmniejsza.
Jest różnie, raz w tę, raz we wtę.
Imo autor wątku zawęził znaczenie/celów stawianych tworzeniu abstrakcji,
zafiksował się na jednym, czyli "zwięzłość kodu". A tych celów/zadań
jest znacznie więcej, wymienię tu dwa, które mi przychodzą do głowy:
1. Podział odpowiedzialności
2. Ochrona kodu przed 'czeskimi' błędami - tak by np. jak najwięcej
błędów było wychwytywanych na etapie kompilacji, a nie w runtimie.
Ad 1.
Podział odpowiedzialności pomiędzy komponenty systemu jest kluczowy
w produkcji złożonego oprogramowania, nad którym np. pracuje wiele
osób. Podział odpowiedzialności/rozdział implementowanych wymagań
pomiędzy komponenty umożliwia z kolei:
- sprawną identyfikację miejsc w kodzie, minimalizację zmian
implementacyjnych, szacowanie ryzyka, ograniczanie ryzyka - kiedy
wymagania się zmieniają (zarządzanie zmianą)
- budowę, zarządzanie, uruchamianie testów jednostkowych
- podział odpowiedzialności wśród ludzi i kontrolę - np. w wydzielonych
podsystemach technicznych maja prawo grzebać tylko niektórzy, jest to
związane z dużym ryzykiem itp itd. Reszta 'klepie' szablonowe procedury
biznesowe
- z tym ostatnim wprost powiązane jest np. zmniejszenie kosztów szkoleń
nowych pracowników, bo nie muszą wiedzieć wszystkiego
- także jest z tym związana łatwiejsza komunikacja programistów z
analitykami/użytkownikami
Ad 2.
Bardzo typowe, czeskie błędy powstają na styku różnych języków
programowania, 'oczywisty' i powszechny przykład: literówki w
zapytaniach SQL schowanych w stringach w językach wyższego poziomu.
Kompilator Javy, choćby się skichał - nie wykryje literówki
w słowie kluczowym "SELECVT". Problem ten rozwiązuje się
na wiele sposobów, np. O/R mapping (cała technologia różnych
abstrakcji), które eliminują konieczność pisania wielu prostych
zapytań i/lub techniki zapisu zapytań SQL za pomocą języka wysokiego
poziomu - patrz np. takie pomysły, jak "Jacle"
http://code.google.com/p/jacle/
Warto zauważyć, że w tym ostatnim przypadku kod wcale nie staje się
zwięźlejszy, a wrecz odwrotnie (BTW. SQL należy do czołówki pod względem
zwięzłości zapisu wymagań.
Następne wpisy z tego wątku
- 10.05.12 14:57 zażółcony
- 10.05.12 15:53 AK
- 10.05.12 16:04 AK
- 10.05.12 16:40 zażółcony
- 10.05.12 20:03 ( prof fir )
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-19 koniki obsiadły kolejki i numerki
- 2024-12-18 Poseł oszukany "na policjanta"
- 2024-12-18 znów chory psychicznie
- 2024-12-18 Katowice => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-18 Poznań => Dyspozytor Międzynarodowy <=
- 2024-12-18 Katowice => System Architect (background deweloperski w Java) <=
- 2024-12-18 Gdańsk => System Architect (Java background) <=
- 2024-12-18 Warszawa => Helpdesk Specialist <=
- 2024-12-18 Katowice => Kierownik Działu Zarządzania Platformą Wirtualizacji i
- 2024-12-18 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-18 Żerniki => Employer Branding Specialist <=
- 2024-12-18 Gliwice => Specjalista ds. public relations <=
- 2024-12-18 Kablówka z modułem CAM
- 2024-12-18 Warszawa => Spedytor międzynarodowy <=
- 2024-12-18 Wróblewo => Analityk finansowy <=