Motywacja dla jakości kodu

Tutaj możesz zadać pytania, które nie znalazły miejsca w innych działach i porozmawiać na ogólne tematy.
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Motywacja dla jakości kodu

Post autor: Zorian »

Widziałem troche kodów ABAP i odnoszę wrażenie, że pisane są niedbale. Tzn nie tworzy się własnych klas a jak się tworzy to nie generyczne ale odwołujące się do konkretnych tabel i kolumn, że raczej powiela się te same kody w wielu miejscach. Mam wrazenie, że to z powodu możliwości wykorzystania tych metod przez konkurencję (np. kolegę w pracy, który ma lepsze chody w zarządzie a nie lubi zbytnio pracować szarymi komórkami). O zaciemnianiu (obfuscation) pewnie nie ma mowy więc tworzy się kody "na odwal", byle działały i żeby ww. koledze nie chciało się tego kopiować. Czy mam rację?
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Motywacja dla jakości kodu

Post autor: wojtas7 »

Zgadzam się że jakość kodu bardzo często nie trzyma się standardów i jest ogólnie rzecz ujmując bardzo niska. Ale raczej nie bierze się to stąd, że ktoś celowo tak robi chroniąc się przed konkurencją, tylko stąd że duża część ludzi którzy tworzą kod albo nie są informatykami i po prostu nie mają nawyku i wiedzy, ktoś ich tak nauczył, są samoukami, mają stare przyzwyczajenia, z lenistwa itd.

Bierze się to też stąd że bardzo rzadko kierownictwo projektu wymaga wysokiej jakości kodu, coś ma po prostu działać żeby użytkownicy byli zadowoleni, a problemy rozwiązuje się jak wydajność jest słaba. Nie spotkałem się jeszcze żeby kierownik projektu robił audyty jakości rozwiązań (nie tylko kodu ale np. interfejsów czy wydruków), sprawdzał np. jakość dokumentacji, albo cedował te zadania żeby programiści nawzajem się sprawdzali/audytowali.

Ale to zapewne temat na dłuższą dyskusję ;-)
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Re: Motywacja dla jakości kodu

Post autor: Zorian »

Z drugiej strony mnie łatwo mówić bo mnie nikt nie kontroluje pod tym względem. Freelacer jestem choć pracuje na etatcie. Nie wiem jak długo to potrwa ale sam analizuję problem, projektuję bazy danych, wykonuje i tworzę aplikacje (zwykle klienckie). Potem sam to rozwijam wedle potrzeb użytkowników. Gdybym poszedł w ABAP i ktoś zacząłby kontrolować mój kod, pewnie bym inaczej śpiewał. Na razie utknąłem w punkcie: iść czy nie iść. Siedzieć na bezpiecznej stosunkowo słabo płatnej posadzie czy spróbować targnąć się na lepsze zarobki ale z perspektywą fiaska i straty tego co mam. Dodatkowo demotywuje mnie to, że moja "siła" to własne biblioteki, które drastycznie redukują mi ilość kodu (i czasu) dając sporo przewagi nad podobnymi gośćmi nie posaiadającymi takich rozwiązań. Jednak moją wadą jest stosunkowa powolność (tzw dzielenie włosa na czworo). Ta cecha pozwala mi opracowywać własne biblioteki ale na pierwszym froncie sprawia żem powolny. Gdyby udało mi się w ABAP część bibliotek odtworzyć (jako metody klas) a moje rozwiązania zechciano by stosować (w takiej czy zmienionej formie), uplasowałbym się w ogonie i odpadł. Tego się obawiam. A ukryć kodu klas ani praktycznie nie ma jak ani podobno nikt z klientów na to nie pójdzie.
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Motywacja dla jakości kodu

Post autor: wojtas7 »

Oczywiście że żaden z klientów na to nie pójdzie bo płacąc Tobie oni dają sobie prawo do Twoich kodów, jak Ciebie w firmie nie będzie to jak będą mieli poprawić/rozwijać jeśli będzie ukryty?
A kod ABAP można ukryć nawet dość skutecznie, jest to używane w AddOnach, które rozwijają zewnętrzne firmy i sprzedają jako dodatek - ale też nie zawsze.

A Twoje rozterki raczej nie będą miały wiele wspólnego z jakością tworzenia kodu - zwykle takie dzielenie włosa na czworo jest lepsze niż lepienie na ślinę i potem poprawianie sto razy tego samego bo ma tyle błędów. Myślę że też jest ważne, żeby jednak być w stanie prototyp rozwiązania napisać szybko, nawet łamiąc jakieś zasady, na zasadzie żeby szybko coś pokazać. Ważne żeby to potem nie zostało już na stałe niedorobione ;-)
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Re: Motywacja dla jakości kodu

Post autor: Zorian »

Podnosisz mnie na duchu :) Ja, nałogowy dłubacz w kodach od tygodnia nie tknąlem ABAP'a ani innej maszyny ale zaraz chyba się wezmę na powrót.
Pozdrawiam.
dominik.tylczynski
Posty: 8350
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1922 times
Been thanked: 1476 times
Kontakt:

Re: Motywacja dla jakości kodu

Post autor: dominik.tylczynski »

wojtas7 pisze:A kod ABAP można ukryć nawet dość skutecznie, jest to używane w AddOnach, które rozwijają zewnętrzne firmy i sprzedają jako dodatek - ale też nie zawsze.
Wojtek, jakie znasz skuteczne metody ukrywania kodu ABAP?
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Motywacja dla jakości kodu

Post autor: wojtas7 »

jestem przeciwny ukrywaniu kodu więc wysyłam Ci na priv ;-)
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Re: Motywacja dla jakości kodu

Post autor: Zorian »

wojtas7 pisze:jestem przeciwny ukrywaniu kodu więc wysyłam Ci na priv ;-)
Ja też bym poprosił jeśli nie masz nic przeciwko? :)
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Motywacja dla jakości kodu

Post autor: wojtas7 »

poszło.

ukrywanie kodu nie jest pro ;-)
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Re: Motywacja dla jakości kodu

Post autor: Zorian »

Mam to :) Gdzieś z sieci ściągnąłem (u mnie wykazuje błąd w poniższej linii)

INSERT gv_code INTO TABLE gt_code INDEX 1.

Gdy usunę słowo TABLE - działa.

Niestety to chroni tylko raporty a mnie zależy na ukryciu klasy.
Feler jest taki, że wstawiany w 1szej linii kod to komentarz a z klasy w momencie aktywacji usuwane są zewnętrzne komentarze :)

Raport zostawiłbym bez zabezpieczenia żeby ktoś mógł w razie czego go zmienić.

Dzięki w każdyma razie za dobrą wolę.
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Motywacja dla jakości kodu

Post autor: wojtas7 »

Po co chcesz ukrywać kod?

Każda metoda klasy jest zapisana jako include więc można spróbować zaszyfrować tą metodą.

Jak pogmerasz w necie są też inne metody działające bezpośrednio na bazie danych.
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Re: Motywacja dla jakości kodu

Post autor: Zorian »

wojtas7 pisze:Po co chcesz ukrywać kod?
Jak wspomniałem w poście otwierającym wątek plus mam specyfikę taka, że lubię rozbijać na atomowe moduły. To ostatnie zajmuje mi sporo czasu (uniwesalizacja, optymalizacja) więc najczęściej przygotowuje takie rzeczy w domu (w czasie prywatnym). Klepanie sekwencyje nie odpowiada mi. Nadmienię, że doświadczenie jakie mam to w językach rzeczywiście obiektowych i na zasadzie takiej, że tworze oprogramowanie od zera a potem je utrzymuję. Przerabianie cudzych kodów jest mi obce i mówiąc szczerze raczej nie chciał bym w to wchodzić.
Z ww. powodow coraz bardziej skłaniam się ku myśli, aby zatrudnić się w jakimś projekcie "od zera".
Każda metoda klasy jest zapisana jako include więc można spróbować zaszyfrować tą metodą.
Kod, który wkleiłeś odnosi się do "report". Czy "include" też jakoś można odczytać? Nazwy metod moga sie powtarzać w róznych klasach więc trzebaby jakoś je odróżnić?
Jak pogmerasz w necie są też inne metody działające bezpośrednio na bazie danych.
Jest coś tutaj ale to nie działa na nowszych systemach (nie istnieja już te tabele, do których się odwołuje kod).
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Re: Motywacja dla jakości kodu

Post autor: wojtas7 »

na razie chyba za bardzo teoretyzujesz. jako kierownik projektu jakby mi programista powiedział że on jakiegoś problemu nie rozwiąże bo on nie grzebie w czyimś kodzie, no to wybacz ale nie do zaakceptowania.

a szyfrowanie Twojego kodu z jakiegoś powodu jest nie do zaakceptowania. Temat przerabiany - po prostu nie rób tak bo zła karma do Ciebie wróci ;-)
Zorian
Posty: 7
Rejestracja: sob maja 03, 2014 4:31 pm

Re: Motywacja dla jakości kodu

Post autor: Zorian »

wojtas7 pisze:na razie chyba za bardzo teoretyzujesz. jako kierownik projektu jakby mi programista powiedział że on jakiegoś problemu nie rozwiąże bo on nie grzebie w czyimś kodzie, no to wybacz ale nie do zaakceptowania.
Ja wiem, że jak bym w to wszedł to będe musiał :/
Jeszcze się łudzę, że będę raczej projektował i ew. programował te pierwsze wersje, po których to inni będą na mnie kląć :)
a szyfrowanie Twojego kodu z jakiegoś powodu jest nie do zaakceptowania. Temat przerabiany - po prostu nie rób tak bo zła karma do Ciebie wróci ;-)
Jestem w trakcie trawienia tego faktu. Trawię już ok 1,5 tygodnia i już mi troche lepiej :)
dominik.tylczynski
Posty: 8350
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1922 times
Been thanked: 1476 times
Kontakt:

Re: Motywacja dla jakości kodu

Post autor: dominik.tylczynski »

wojtas7 pisze:a szyfrowanie Twojego kodu z jakiegoś powodu jest nie do zaakceptowania. Temat przerabiany - po prostu nie rób tak bo zła karma do Ciebie wróci ;-)
Pełna zgoda co do karmy :D i generalnie szyfrowania kodu.

Jeden przypadek kiedy widzę sens szyfrowania kodu, to kiedy piszesz addon, który chcesz sprzedawać jako komercyjny produkt. Addon, w który włożyłeś swój własny, autorski pomysł. Przerabiałem ten temat ostatnio i okazało się, że poza prawem autorskim nie bardzo masz jak chronić wartość intelektualną takiego produktu - nie można swoje autorskiego pomysłu opatentować.

Tak przy okazji temat rozpoczął się od pytania o motywację dla jakości kodu, a zeszło na kwestię jak zaszyfrować kod. Ciekawa ewolucja wątku.

Moim zdaniem taka motywacja jest przede wszystkim wewnętrzna, bo z pracy wysokiej jakości, ma się wysokiej jakości satysfakcję.

Natomiast faktem jest, że bardzo często kod ABAP jest pisany niedbale. Moim zdaniem wynika to z kilku kwestii:
  • Już można mieć uwagi do jakości standardowego kodu - to chyba wynika z historii, czasu w jakim powstawał system, z ilości ludzi, który go pisali, pewnie także z włączania do systemu kodu pisanego przez inne firmy
  • W projektach kod jest pisany na zasadzie załatania braków funkcjonalnych (rozszerzenia) i dlatego jest tworzony od przypadku do przypadku. Brak tutaj całościowego, systemowego podejścia do developmentów na projektach, choć w systemie są narzędzia do tego
  • Dalej już po starcie system jest często utrzymywany przez zewnętrzne firmy supportowe, które też lubią się zmieniać, a modyfikacje są robione bez żadnych standardów kodowania, przez różnych konsultantów.
Jeśli do tego doda się, że programista jest zwykle najgorzej opłacanym członkiem projektu, a budżety są zwykle ciasne, to jasne jest skąd słaba jakość kodu.
ODPOWIEDZ