Indywidualny styl programowania

Odpowiedz Nowy wątek
2015-02-22 00:03
KryptoPtr
0

Witam, poszukuje materiałów lub książek na pewne zagadnienie. Chodzi mi mianowicie o wiadomości na temat pisania programów w swoim indywidualnym stylu lub korzystania z pewnych zabiegów. Po czym kod jest bardziej dla piszącego a dla innych jest mnie przejrzysty. Szukałem trochę na ten temat ale nie znalazłem nic szczególnego. Ciężko nawet sformułować o co mi chodzi ;p. Nie chodzi mi o zabieg zaciemniania kodu programu i korzystania z rożnych programów typu obfuskator. Może ktoś się spotkał z czymś o czym pisze? Chodzi mi o poszerzenie wiedzy a nie walkę z "poprawnymi" zasadami pisania programów :) Dziękuje za pomoc.

Pozostało 580 znaków

2015-02-22 00:37
0

Jeśli znajdziesz w książce jakiś indywidualny styl programowania, który ma być czytelny, to znaczy, że więcej ludzi może go znać i używać ;) Zwłaszcza, że nie chcesz pisać niezgodnie ze sztuką.

Jeśli stosujesz jakieś optymalizacje kodu i nie udostępniasz innym programistom komentarzy, to można mieć trudności w zrozumieniu.

edytowany 2x, ostatnio: Spine, 2015-02-22 00:37

Pozostało 580 znaków

2015-02-22 01:04
the real mućka
0

Ja mam swoj wlasny, jedyny i niepowtarzalny, styl: zawsze uzywam pre- zamiast post-inkrementacji. Np. zawsze pisze ++i zamiast i++. Takie zboczenie jeszcze z czasow c++, gdzie sie nauczylem przeciazac operatory i tam wytlumaczono ze post- jest najczesciej mniej wydajny niz pre- (uzywa dodatkowej zmiennej poniewaz musi zachowac 'stara' wartosc sprzed inkrementacji). Teraz jest to bez znaczenia ale jakos tak uzywam, i jak widze kawalek kodu gdzie cos takiego jest uzyte to niemal na 100% bez git annotate moge powiedziec ze ta linijka jest moja ;d

Widocznie mało iteratorami się bawiłeś, skoro to dzisiaj dla Ciebie bez znaczenia - spartanPAGE 2015-02-22 09:05

Pozostało 580 znaków

2015-02-22 01:06
0

jak dla mnie na poziomie formatowania, nazewnictwa zmiennych, czy struktury plików itp. to nie ma co szaleć, tylko pisać raczej tak, jak się przyjęło w danym języku (ew. w danym projekcie, jak się dołącza do istniejącego projektu), tak jak jest zalecane. Czasem jest to wkur...jące (np. ostatnio się zmuszam, żeby zawsze pisać klamerki po if czy po for), ale dzięki temu jest jakaś spójność, jakieś standardy. Tak samo nie wiem, jakby ktoś w Pythonie zaczął używać camelCase do zmiennych zamiast snake_case, byłoby to dziwne.

edit: no chyba, że jakieś mało znaczące rzeczy, co do których środowisko jest podzielone, a które są kompletnie nieistotne (chociaż wtedy i tak jeśli bym pisał sam,to bym pisał po swojemu, ale jakbym pracował przy jakims projekcie, to dostosowałbym się do projektu, żeby zachować spójność.

Natomiast myślę, że i tak każdy ma jakiś tam swój styl na poziomie bardziej algorytmów, sposobu podejścia do problemów (ja np. lubię operować na listach, czyli w jakimkolwiek języku bym nie pisał, pewnie będę używał funkcji map, filter, reduce - podczas gdy ktoś inny być może rozwiąże ten sam problem za pomocą kilku pętli). Lubię też podejście data-driven, kiedy to dane sterują przebiegiem programu, a nie jest on na sztywno zapisany w kodzie (bo wystarczy wtedy podmienić dane, i program się inaczej zachowa). Natomiast mam świadomość, że ktoś inny by przysiadł i pewnie by zupełnie inaczej podszedł do problemu.

Po czym kod jest bardziej dla piszącego a dla innych jest mnie przejrzysty.

czyli failuje, bo usiądzie za miesiąc i nie będzie wiedział o co chodzi.
oto klasyk (i między innymi krytyka takiego podejścia): https://www.cs.utexas.edu/~EW[...]criptions/EWD03xx/EWD340.html


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 2x, ostatnio: LukeJL, 2015-02-22 01:09

Pozostało 580 znaków

2015-02-22 17:11
the real mućka
0

@spartanPAGE: dzisiaj to dla mnie bez znaczenia poniewaz nie pisze w c++. Zdaje sobie sprawe ze dla wielu to moze miec znaczenie, moze nawet w javie zeby oszczedzic ten bytecode czy 2.

Kompletnie nie rozumiesz tematu - spartanPAGE 2015-02-22 17:50

Pozostało 580 znaków

2015-02-22 18:30
the real mućka
0

@spartanPAGE: ok, masz racje.

Pozostało 580 znaków

2015-02-22 21:23
KryptoPtr
0

Po pierwsze używanie operacji pre- i post-inkrementacji związane jest nie bardziej ze stylem pisania ale już świadomym pisaniem pewnych operacji. I jedno i drugie może dać inne efekty obliczeniowe w pewnych przypadkach wiec trzeba o tym pamiętać ;/ Po drugie nie chce rozsadzać czy stosowanie norm pisania jest "lepsze" od tego jeżeli ktoś ma jakieś inne nawyki. I nie chce tutaj nic fejlować :P i to samego siebie. Słyszałem tylko na studiach od prowadzącego (chyba), że przy zastosowaniu pewnych operacji można nauczyć się pisać w sposób dla siebie zrozumiały po pewnych ćwiczeniach a dla innych staje się kod trudniejszy. Nie chce tu mówić o plusach takich sytuacji ale jestem racze ciekaw czy są jakieś książki lub materiały powiązane z tym tematem? Czy to raczej jakiś mój wymysł pseudonaukowy?

Pozostało 580 znaków

2015-02-22 21:35
the real mućka
0
KryptoPtr napisał(a):

Po pierwsze używanie operacji pre- i post-inkrementacji związane jest nie bardziej ze stylem pisania ale już świadomym pisaniem pewnych operacji.

Jak juz napisalem, a moze i nie, nie znam nikogo kto by pisal ++i zamiast i++. Mam do czynienia z programistami Java, Objective-C, Python, wiec moze inni mistrzowie klasy @spartanPAGE jedna tak robia. W tym kontekscie uzaje to za styl ;d

a więc dobra, krótkie wyjaśnienie: różnica między ++i, a i++ jest taka że jeśli i = 1, to ++i zwróci 2, a i++ zwróci... 1 (może to wiesz, ale piszesz w ten sposób, jakbyś tego nie wiedział) - LukeJL 2015-02-22 22:23
Nie mi dane oceniać twoje kręgi - spartanPAGE 2015-02-22 22:24
/ stąd chyba ten twój spór teraz ze @spartanPAGE / - LukeJL 2015-02-22 22:25
podejrzewam, że kolega ma przede wszystkim na myśli inkrementowanie zmiennej iteracyjnej w for'ach. Bo wówczas to faktycznie nie ma znaczenia. I o to ten cały ambaras :) - Sawyer7 2015-02-22 22:35

Pozostało 580 znaków

2015-02-22 22:40
0
KryptoPtr napisał(a):

Po czym kod jest bardziej dla piszącego a dla innych jest mnie przejrzysty. Szukałem trochę na ten temat ale nie znalazłem nic szczególnego. Ciężko nawet sformułować o co mi chodzi ;p.

Zacznij czytać książki Wujka Boba, czyli - Robert C. Martin np. Czysty kod.

Pozostało 580 znaków

2015-02-23 11:02
the real mućka
0

a więc dobra, krótkie wyjaśnienie: różnica między ++i, a i++ jest taka że jeśli i = 1, to ++i zwróci 2, a i++ zwróci... 1 (może to wiesz, ale piszesz w ten sposób, jakbyś tego nie wiedział)

Jezus, a ja moja cala dotychczasowa kariere myslalem inaczej i dlatego mialem zawsze bledy off-by-one w petlach. Dzieki, chlopaki!

Powaznie, chodzilo mi o ++i lub i++ w petlach. W miejscach gdzie post- lub pre- robi roznice kazdy napisze to poprawnie. Inna sprawa, ze zapis int d = ++i + 1; jest bardzo nieczytelny, i w niektorych (wersjach) kompilatorach nie jest zdefiniowane jakas wartosc bedzie miala zmienna d (C++, wink, wink).

Akurat w tym przypadku jest zawsze dobrze zdefiniowany wynik tego wyrażenia. Wynik byłby niezdefiniowany, gdyby zmienna i była użyta więcej niż raz. - Krolik 2015-02-28 11:35
A co do nieczytelnosci to się zgadzam. W ogóle operator ++ to był głupi pomysł. Język spokojnie obyłby się bez niego, a programistów nie kusiłoby robić dwóch lub więcej rzeczy w jednej linii. - Krolik 2015-02-28 11:38

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

3 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 3

Robot: CCBot (3x)