Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 14 lis 2024, o 03:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 3 sty 2013, o 22:30 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W końcu się uporałem z "oprogramowaniem" wyświetlaczy 7LED i DS18B20. Bardzo pomocna okazała się oczywiście książka p.Mirka dzięki której bezboleśnie przebrnąłem przez konfigurację Timera jak i całą obsługę multipleksowania wyświetlaczy.
Jest to mój pierwszy "poważny" program napisany pod AVR. Sam program działa poprawnie. Zachowuje się dokładnie tak jak zaplanowałem. Moja prośba dotyczy wskazania mi czy rozwiązania które zastosowałem są poprawne. Czy np. to że mam dwie tablice, jedna do cyfr bez kropki a druga do cyfr z kropką, jest właściwe, czy też można to zrobić inaczej? Czy funkcja wyświetlająca temperaturę jest poprawnie napisana? Wiem że są niedociągnięcia np. brak podziału na pliki, użycie _delay_ms() w pętli, być może nawet inne, mam zamiar to dopieścić. Teraz zależy mi jednak na ogólnej ocenie poprawności kodu.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2013, o 23:46 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Ja bym powiedział tak ;) biorąc oczywiście pod uwagę to co napisałeś pod koniec tzn o tych niedociągnięciach żeby na nie nie patrzeć .... ;)

Ale jednak musisz się troszeczkę oswoić na naszym forum, że tak zaprezentowany kod podany w całości w jednym pliku do analizy ( i jeszcze są jakieś kłopoty z wcięciami ) ... że to troszkę nie wypada - nie zrozum mnie źle nie chodzi o to żeby ciebie tu ganić, ale taki zwyczaj, że jak kogoś pytasz o poradę tutaj to kod powinien być napisany zgodnie z zasadami poprawnego pisania kodu w C żeby inni mogli w ogóle oceniać taki kod, żeby chciało się oczami po tym latać i spędzić czas nad tym żeby pomóc rozumiesz? Przy okazji to taka praca u podstaw, która szybko się tobie samemu zwróci z nawiązką. Bo ja przyznam szczerze mętliku w oczach dostaję jak próbuję patrzeć na ten kod.

Ale że jesteś nowy na forum i żebyś nie pomyślał że moim celem jest jakieś "czepianie" się ciebie to eeeeh przebrnąłem oczami przez ten gąszcz i mogę powiedzieć śmiało - że w zasadzie jedyne co brakuje w prezentowanym kodzie to zrobić tą kosmetykę jak ty to nazywasz (podział na pliki ;) usunięcie delayów itp) a ja to nazywam jednak PODSTAWOWYM porządkiem i staram się walczyć o takie podejście wśród naszych forumowiczów z uporem maniaka ;)

Co do funkcji wyświetlającej - to w czym ona może być lepsza lub gorsza jeśli spełnia twoje założenia. Tzn ja wiem ;) ja też tak nieraz mam że jak coś napiszę to się zastanawiam eeeh czy to nie dałoby się krócej i lepiej napisać. Kiedyś poświęcałem temu za dużo uwagi i traciłem czas. Teraz mam tak - jeśli spełnia moje założenia ale NIE koliduje z innymi częściami programu to jest OK.

Owszem jak mam chwilę to czasem siedzę patrzę się jak sroka w gnat i czasem coś tam jeszcze wymyślę uporządkuję ;)

ja generalnie nie widzę tu jakichś takich rzeczy żeby powiedzieć że tu jest źle a tam jeszcze gorzej ...

chociaż ??? no widzisz przez ten brak wcięć ciężko to zauważyć co to u ciebie jest za koństrukcja ???

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


takie rzeczy siedzą wewnątrz tej funkcji do wyświetlania. Tzn to nie jest błąd - ale się zastanawiam czy ty wiesz o co chodzi czy nie tutaj - po co te nawiasy klamrowe ?

Mam nadzieję, że w kolejnej odsłonie będzie już po kosmetyce - a mi ale też innym łatwiej będzie na to rzucić okiem dalej jak coś ;) ..... generalnie jednak nie jest źle

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:07 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

Marcin_G napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




Na początku myślałem że będzie fajnie a tu [...cenzura...] [mirekk36 - halo halo panie kolego ;) ] :). Pytasz się o opinie to ją uzyskasz:
1) Być może to wynika z tego że wrzuciłeś w takiej postaci na forum ale czemu nie stosujesz systemu plików? To że jest to tymczasowe to nie znaczy że nie może być ładne. Pamiętaj: Prowizorka trwa wiecznie.
2) search_sensors(); zwraca liczbę czujników, jeżeli masz zamiar używać tylko jednego czujnika to nie musisz używać tej funkcji w bibliotece jest funkcja DS18X20_read_meas_single która nie potrzebuje ID sensora, wystarczy tylko family code (czyli pierwszy bajt ROMCOD-u);
3) Po co Ci _delay_ms(750) w pętli głównej? Wywal to paskudztwo jak najszybciej i zastosuj timer sprzętowy (przykład jest na blogu Mirka). Jedyne delaye które toleruje to tylko podczas prób, w protokołach (np w 1wire lub LCD) no i na początku programu (np jak chcemy zrobić "pseudo ładowanie" programu :));
4) Po jakiego grzybka te _delay_ms(1000)? I to w takiej ilości? Czyżby coś nie działało bez tego? Jeśli tak to program jest kompletnie popsuty.
5) Co ta za dziwaczne wcięcia? Formatuj kod. Jeżeli używasz eclipsa i takie rzeczy dzieją ci się po wklejeniu to zaznaczasz fragment tekstu i kombinacja shift+tab cofasz wcięcia (sam tab robi wcięcia). ;
6) Jak wychodzisz na ulice to się ładnie ubierasz czeszesz włosy, myjesz się itd... Jak wstawiasz kod na forum to też warto by zadbać o to żeby ładnie wyglądał, bo to on Ciebie reprezentuje.;
7) LED_KATODY = 0xFF no tutaj to może i jest do przyjęcia ale takich rzeczy używaj tylko w ostateczności (jak zacznie brakować Ci pamięci) Bo zawsze może się zdarzyć że będziesz potrzebował użyczyć jakiegoś pinu z portu D.
8) Do odczytu temperatur proponuje używać struktur (w których mógłbyś zawrzeć interesujące Cię dane czyli temp, temp_f, znak, ROMCODE, i wiele innych rzeczy), dzięki temu programowanie stanie się przyjemniejsze. No i można napisać własne funkcje które ułatwią używanie bibliotecznych funkcji;

9) Co do kropek to możesz zrobić to inaczej, czyli spróbować załączać lub kasować kropkę za pomocą LED_KATODY_CYFRY |= (1<<SEG_DP) lub LED_KATODY &= ~(1<<SEG_DP) jeżeli masz zamiar używać

Co można jeszcze napisać? Proponuje rozbudować trochę projekt i zrobić coś na wzór termostatu dwustanowego. A jeżeli kod działa poprawnie (nie chce mi się go sprawdzać) i nie widać żadnych niepożądanych efektów, to program jest napisany dobrze (pod względem algorytmu) ale słabo pod względem programistycznym.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

staneq --> fajnie ze chciało ci się więcej ode mnie nad tym posiedzieć ;) i podać uwag ... dziękuję, ale podstawowa zasada - absolutnie zdecydowanie przyjaźnie i delikatnie podchodzimy szczególnie do nowych kolegów - którzy muszą najpierw poznać ten nasz (jak ktoś na forum fajnie określił) System ;) i nasze zwyczaje OK - taka moja gorąca prośba żeby również w przyszłości samemu być na takie podejście uczulonym i samemu pilnować tego na naszym przyjaznym forum. Dzięki temu utrzymamy fajny poziom ok?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Jak widzę te 5 delayów po 1000ms pod rząd, to słabo mi się robi.

Jakby nie można było dać _delay_ms(5000)
albo jak już tak koniecznie chcesz po 1000ms to w pętli chociaż, chociażby for.


Nawet jak za if-em masz jedną instrukcję, to dawaj ją w nowej linii, powyżej i poniżej instrukcji klamry. Czyli tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wyrabia to dobre nawyki i zwiększa czytelność kodu.

Mirek stosuje takie klamrowanie:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ale to w szanującej się firmie produkującej kod Ci od razu odrzucą. :P

------------------------ [ Dodano po: 4 minutach ]

Co to za nazwy zmiennych w1, w2, ... w6? Katastrofa...
Dobry kod to kod samokomentujący się. Nazwy zmiennych mają odzwierciedlać ich przeznaczenie.
Nie mieszaj języków. Albo wszystko po polsku, albo po angielsku. Lepiej wyrobić sobie nawyk pisania kodu po angielsku.

------------------------ [ Dodano po: 5 minutach ]

Kurka, sam używam delayów u siebie póki co, trzeba się będzie na dobre zaprzyjaźnić z timerami. ;)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Ledes napisał(a):
Jakby nie można było dać _delay_ms(5000)


W nowym toolchainie może ci się to nie udać ;) wtedy trzeba np tak właśnie rozbijać ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:56 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

Nie myślałem że to słowo może być tak odebrane :). Moim celem nie było obrażenie tylko pokazanie że początek programu był dobry (fajne i ładnie wszystko zapisane) ale późnij to już tak jakby się nie chciało już nic pisać tylko tak żeby jak najszybciej zadziałało (co jak najbardziej rozumiem sam tak mam)


Jeszcze jedną rzecz wypatrzyłem: W kodzie używane są tylko komentarze blokowe "/*.....*/" może kolega spokojnie używać komentarzy liniowych "//" szybciej się je wstawia i można je zapętlać

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

No i podział projektu na pliki. Podstawa.
Tu tego nie ma.

main.c powinien zawierać max kilkadziesiąt linii kodu (na moje oko), w tym pętlę główną programu.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 00:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Ledes napisał(a):
Mirek stosuje takie klamrowanie:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To już nie chodzi o to jakie mirek stosuje, bo mirek sam tego nie wymyślił tylko stwórcy języka C.

Ale zwróć uwagę Ledes na to co napisałem wyżej, te klamry wokoło IF'a nie spowodują błędu w kompilacji hmmm? a więc może po coś są ? Dlatego dopytałem autora żeby mi że tak powiem do-wyjaśnił dlaczego je zastosował ;) żebym wiedział czy robi to świadomie i w dobrym celu czy nieświadomie ot tak sobie.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Mirek, jeżeli o tym mówisz:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To nie mogę się oprzeć wrażeniu, że koledze autorowi się ręka omsknęła i dał górną klamrę za wysoko o linijkę/dwie.

A co do klamer w samym ifie, to każda klamra powinna być w oddzielnej linii, nie bezpośrednio za ifem tylko w nowej linii. Z pętlami to samo. Wiem, że zwiększa to nieznacznie kod, ale optycznie lepiej to wygląda i tak się robi po prostu w poważnych firmach. Po co wyrabiać sobie złe nawyki?

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:03 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

staneq napisał(a):
Nie myślałem że to słowo może być tak odebrane :). Moim celem nie było obrażenie tylko pokazanie że początek programu był dobry (fajne i ładnie wszystko zapisane) ale późnij to już tak jakby się nie chciało już nic pisać tylko tak żeby jak najszybciej zadziałało (co jak najbardziej rozumiem sam tak mam)


Mam nadzieję, że źle nie odebrałeś tej mojej uwagi ;) bo wiem że nie jesteś wrogo nastawiony - ale czasem wolę chuchać na zimne ok ? ;)


- z drugiej strony cieszę się, że tak wiele osób docenia takie podejście jak podział projektu na pliki - jako podstawę ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Co do nazw zmiennych, to jeszcze mi się przypomniało, że dobrze jest stosować w tym względzie notację węgierską,
http://pl.wikipedia.org/wiki/Notacja_w%C4%99gierska

np. zamiast

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


piszemy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


c oznacza constant. Później w kodzie od razu widać, co jest co. ;) p do wskaźników (pointer), f do flag itp. ;)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:07 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Ledes napisał(a):
Mirek, jeżeli o tym mówisz:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To nie mogę się oprzeć wrażeniu, że koledze autorowi się ręka omsknęła i dał górną klamrę za wysoko o linijkę/dwie.

Pomyśl gdyby to był jakiś błąd to KOŃPILATOR zaraz by protestował ;) a nie protestuje ... więc coś w tym jest prawda ?

Ledes napisał(a):
A co do klamer w samym ifie, to każda klamra powinna być w oddzielnej linii, nie bezpośrednio za ifem tylko w nowej linii. Z pętlami to samo. Wiem, że zwiększa to nieznacznie kod, ale optycznie lepiej to wygląda i tak się robi po prostu w poważnych firmach. Po co wyrabiać sobie złe nawyki?


No ale tu jest kilka wersji i też pisałem o tym w książce każdy wybierze jedną, czyli można pisać tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i ja tak stosuję nagminnie

albo tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ale to już indywidualne upodobania. Ważne aby nie mieszać stylów we własnym kodzie.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Jak masz dużo podobnych zmiennych jak tu np. W1, W2, ... W6 to warto je zebrać w tablicę. ;)

------------------------ [ Dodano po: 1 minucie ]

Masz rację Mirek, najważniejsza jest konsekwencja. Ale sposób "klamrowania" który tutaj promuję ma o wiele większą czytelność zwłaszcza dla osób postronnych czytających kod. I chyba nikt temu nie zaprzeczy. A czytelność i przejrzystość kodu to rzecz święta. ;)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:10 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Ledes napisał(a):
Jak masz dużo podobnych zmiennych jak tu np. W1, W2, ... W6 to warto je zebrać w tablicę. ;)


Bardzo cenna uwaga ;)

------------------------ [ Dodano po: 1 minucie ]

W ogóle dużo cennych uwag ;) aż serce rośnie jak widać, że ja już nie nadążam a inni pomagają ;) dziękuję za taką postawę.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:16 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

mirekk36 napisał(a):
Ale zwróć uwagę Ledes na to co napisałem wyżej, te klamry wokoło IF'a nie spowodują błędu w kompilacji hmmm? a więc może po coś są ?


Nie spowodują bo według języka C taki zapis będzie oznaczał zblokowanie pewnego wyrażenie, jest to pomocne jeżeli chcemy użyć jakiejś zmiennej lokalnej którą będziemy potrzebować tylko w tym fragmencie kodu, ale ponieważ wszystkie zmienne w tej klamrze będą miały charakter lokalny po wyjściu z tych nawiasów nie będziemy mogli się odwołać to zmiennej utworzonej wewnątrz bloku. Ba jeśli zmienna w bloku będzie miała taką samą nazwę to kompilator nie zgłosi nawet błędu (czasami może być jakieś ostrzeżenie ale nie musi). Może to być przyczyną wielu problemów, bardzo trudnych do wykrycia.

Leeds-> wydaje mi się że stosując eclipse nie trzeba stosować notacji węgierskiej bo najeżdżając na zmienną i przytrzymując (lub wciskając F2) dostajemy podgląd na deklaracje zmiennej. Bardziej opłacalne w takiej sytuacji wydaje się aby w nazwie zmiennej podawać plik w którym się zmienna znajduje lub czego dotyczy (np: termostat_ustawiona) itd.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

staneq napisał(a):
Leeds-> wydaje mi się że stosując eclipse nie trzeba stosować notacji węgierskiej bo najeżdżając na zmienną i przytrzymując (lub wciskając F2) dostajemy podgląd na deklaracje zmiennej. Bardziej opłacalne w takiej sytuacji wydaje się aby w nazwie zmiennej podawać plik w którym się zmienna znajduje lub czego dotyczy (np: termostat_ustawiona) itd.

Przykro mi, ale źle Ci się wydaje.
Dzisiaj robisz projekt w ECLIPSE, a jutro coś większego zespołowo no i kolega z zespołu już nie będzie miał ECLIPSE tylko powiedzmy AVR Studio. I co? Klops. Poza tym od razu widzisz co jest co bez mrugnięcia okiem. Czy to ma sens czy nie. Bo po pewnym czasie po zmiennej rozpoczynającej się na p nie postawisz odruchowo kropki, tylko strzałkę. Wiesz, o co chodzi? Chodzi o wygodę pisania kodu też.

Jeśli już jesteśmy w sprawach kosmetyki, to ja akurat nie trawię zapisu nazw zmiennych z podkreśleniem.
Więcej roboty, dłuższe nazwy. Nie lepiej tak? (chyba camel-style to się zwie):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No powiedz, czy nie lepiej? Zwłaszcza odbije Ci się to czkawką jak zaczniesz tworzyć nazwy zmiennych typu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ja już to przerabiałem i zmądrzałem. Lepiej camel-style. ;)

------------------------ [ Dodano po: 1 minucie ]

No i lepiej krótkie nazwy.

valCnt zamiast valueCounter itp.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:26 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

staneq napisał(a):
Nie spowodują bo według języka C taki zapis będzie oznaczał zblokowanie pewnego wyrażenie, jest to pomocne jeżeli chcemy użyć jakiejś zmiennej lokalnej którą będziemy potrzebować tylko w tym fragmencie kodu, ale ponieważ wszystkie zmienne w tej klamrze będą miały charakter lokalny po wyjściu z tych nawiasów nie będziemy mogli się odwołać to zmiennej utworzonej wewnątrz bloku. Ba jeśli zmienna w bloku będzie miała taką samą nazwę to kompilator nie zgłosi nawet błędu (czasami może być jakieś ostrzeżenie ale nie musi). Może to być przyczyną wielu problemów, bardzo trudnych do wykrycia.

To było wprawdzie pytanie do autora ale kolega sporo wyjaśnił - ja dodam, że czasem po prostu też stosuje się takie klamry dla zwiększenia czytelności kodu podzielonego na bloki - ale właśnie trzeba to robić umiejętnie i nie nadużywać tego bo może to przynieść też kłopoty jak widać zamiast korzyści. Dlatego pytałem czy to świadome działanie ;)

staneq napisał(a):
Leeds-> wydaje mi się że stosując eclipse nie trzeba stosować notacji węgierskiej bo najeżdżając na zmienną i przytrzymując (lub wciskając F2) dostajemy podgląd na deklaracje zmiennej. Bardziej opłacalne w takiej sytuacji wydaje się aby w nazwie zmiennej podawać plik w którym się zmienna znajduje lub czego dotyczy (np: termostat_ustawiona) itd.

No tutaj bym dodał że takich standardów zapisu jest jeszcze więcej i też nie ma chyba najlepszego a taki jaki wybierze sobie programista czy zespół będzie dla nich najlepszy. Ważne znowu aby nie mieszać stylów w swoim kodzie.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Kurczę, ja się tu wymądrzam, a jutro wrzucę swój kod z delayami i floatami i wyjdę na idiotę i ignoranta. Cóż, sam jestem sobie winny. :/

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

Dokładnie styl "wielbłądzi" miałem jeszcze na myśli ale powtarzam - Panowie i nie spierajcie się który z was ma rację co do stosowanej notacji bo jak mówię - to nie ma znaczenia poza własnym przyzwyczajeniem i stosowaniem jednej z nich.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:41 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

Ledes napisał(a):
Masz rację Mirek, najważniejsza jest konsekwencja. Ale sposób "klamrowania" który tutaj promuję ma o wiele większą czytelność zwłaszcza dla osób postronnych czytających kod. I chyba nikt temu nie zaprzeczy. A czytelność i przejrzystość kodu to rzecz święta. ;)



Jeśli mogę wtrącić swoje 2 grosze to zapis:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ma 1 przewagę na zapisem :

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w przypadku gdy zakomentujemy if-a (np żeby pominąć na jakiś czas warunek aby sprawdzić czy wszystko w środku if-a jest cacy)nie będziemy musieli szukać dolnego nawiasu klamrowego żeby jego także umieścić w komentarzu

Ale to jest tylko kosmetyka i każdy lubi jak mu się podoba.


Co do firm programistycznych i pisania ładnych kodów to się nie zgodzę. Znam paru ludzi którzy pracują (a właściwie to stażują) w COMARCHU, niby dobra firma programistyczna ale ich kody wołają o pomstę do nieba i rychłe zesłanie burzy na nad ich głowy.


A co do cammelStyl to także używam ale w drugiej części. Jednakże używanie tego stylu do nazywania zbyt długich zmiennych wygląda po prostu okropnie (taka jest moja opinia i nikt się z nią zgadzać nie musi). A jeśli z kimś robię projekt to się na samym początku dogaduję w jakim programie pisze mój partner tak abyśmy wybrali 1 i ten sam, właśnie po to aby ułatwić sobie pracę. No i wtedy ustalam z nim co i jak ma być (jaka form zapisu itd). Przydatna wtedy jest tablica na której można zapisać swoje ustalenia tak aby mieć je ciągle przed oczami. A jeżeli ktoś po jakimś czasie chce do mnie dołączyć to ok ale musi przystanąć na moje warunki albo zająć się zmianami.
A co jeśli twój współprogramisata będzie przyzwyczajony do innej notacji i będzie ją stosował?
Nie można pisać programu tak żeby każdemu odpowiadało to po prostu niemożliwe. Jak to się mówi:
Cytuj:
Jeszcze się taki nie narodził
co by każdemu dogodził


no i oczywiście:
Cytuj:
Gdzie dwóch polaków tam trzy różne zdania.



OFFTOP: zauważyłem że forum ożywa po północy. Czyżby użytkownicy byli wampirami?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 01:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

staneq napisał(a):
Jeśli mogę wtrącić swoje 2 grosze to zapis:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ma 1 przewagę na zapisem :

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w przypadku gdy zakomentujemy if-a (np żeby pominąć na jakiś czas warunek aby sprawdzić czy wszystko w środku if-a jest cacy)nie będziemy musieli szukać dolnego nawiasu klamrowego żeby jego także umieścić w komentarzu


Całkiem słusznie, trafna uwaga. ;)

------------------------ [ Dodano po: 4 minutach ]

staneq napisał(a):
Co do firm programistycznych i pisania ładnych kodów to się nie zgodzę. Znam paru ludzi którzy pracują (a właściwie to stażują) w COMARCHU, niby dobra firma programistyczna ale ich kody wołają o pomstę do nieba i rychłe zesłanie burzy na nad ich głowy.

COMARCH nie znam. Ale dzięki twojej opinii wiem, gdzie nie uderzać po studiach. :)

Ale jak już rozmawiamy o firmach, to byłem na stażu w Samsungu i tam takie rzeczy jak kosmetyka, notacja, wcięcia i klamry to podstawa podstaw. Nie dziwię się, bo nad projektem siedzi kilka/naście/dziesiąt/set ludzi nierzadko z różnych miejsc Polski i Świata.

Pierwszego dnia dostałem pokaźny pliczek kartek, jakieś 100 sztuk A4, tzw. Coding Norms, gdzie było dokładnie opisane, gdzie stawiać klamrę a gdzie średnik, jak nazywać zmienne a jak stałe. Wbrew pozorom jest to szalenie ważne. Dzięki temu to jakoś hulało no i jest na rynku taki Galaxy S3 czy SmartTV. :P

O tym mówię. To, co Mirek w poradnikach swoich mówił: pisz tak, jakbyś pracował w zespole. Nawet jak piszesz sam. :)

------------------------ [ Dodano po: 12 minutach ]

staneq napisał(a):
OFFTOP: zauważyłem że forum ożywa po północy. Czyżby użytkownicy byli wampirami?

Hehe, pewnie trochę tak. ;)
Ale ciiii, bo nas do lochu ześlą, a tam Nosferatun Sun straszy! :>

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 08:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

staneq - ja tez jestem zdania ze lepiej uzywac :

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 10:01 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

staneq napisał(a):
A co jeśli twój współprogramisata będzie przyzwyczajony do innej notacji i będzie ją stosował?


No ale widzisz na podstawie tego zdania można wyciągnąć wniosek (może błędny - nie wmawiam tego tobie oczywiście), że nie miałeś okazji pracować w zespołach programistycznych. Również to, że co chwilę jakby z uporem próbujesz powiedzieć, że któraś notacja jest gorsza czy zapis a inny lepszy ;)

W zespole upodobania jednostki się nie liczą, i im lepszy zespół się dobierze tym mniej walki o to co wybrać, dużo szybciej dochodzi się do kompromisów itp ... Wiem wiem, nie do każdego musi to trafiać co mówię, szczególnie właśnie gdy ktoś nie miał okazji pracować jeszcze w takich zespołach.

Zatem proszę ew skończyć Panowie rozważania jaki zapis, jaka notacja jest lepsza bo to nie zaprowadzi nas donikąd co najwyżej będą drobne sprzeczki. A po co ? ;)

Jeszcze raz podkreślę - dobry styl programowania to wybór jednego stylu czy notacji i trzymanie się jej. I to wystarczy, to warto zapamiętać z tej całej dyskusji....

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 10:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Jasne Mirek. Mi nie chodzi o sprzeczki, drobne argumentowanie jest ok, gorzej jak przeradza się to w kłótnię.
Przedstawiłem tylko swój punkt widzenia (z którym nie każdy musi się zgadzać) i uargumentowałem go. ;)

Pozdrawiam.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 10:52 
Offline
Użytkownik

Dołączył(a): 27 gru 2012
Posty: 159
Pomógł: 3

@mirekk36:
Wręcz przeciwnie, ja chciałem koledze uświadomić że stwierdzenie że notacja węgierska nie jest najlepszą notacją i że można ale nie trzeba jej stosować. Zdanie to było przewidziane dla Leeds który wysunął argument że "dobrze jest" ją stosować, bo wtedy będzie można z każdym współpracować. Zdanie wyżej zresztą napisałem:
staneq napisał(a):
(...) A jeśli z kimś robię projekt to się na samym początku dogaduję w jakim programie pisze mój partner tak abyśmy wybrali 1 i ten sam, właśnie po to aby ułatwić sobie pracę. No i wtedy ustalam z nim co i jak ma być (jaka form zapisu itd). Przydatna wtedy jest tablica na której można zapisać swoje ustalenia tak aby mieć je ciągle przed oczami. A jeżeli ktoś po jakimś czasie chce do mnie dołączyć to ok ale musi przystanąć na moje warunki albo zająć się zmianami.(...)

I tak jak mówisz najważniejsza jest KONSEKWENCJA. Ale mądra konsekwencja, nie taka że moje jest cacy a twoje be, tylko czasami (np. przy okazji mniejszych projektów) spróbować zastosować inną konwencje zapisu tak aby w przyszłości nie mieć z nią problemów jak przyjdzie nam pracować z kimś innym, no i nie oszukujmy się, tylko krowa nie zmienia zdania :). Czasami może się nam odmienić i wtedy zmieniamy styl programowania (oby tylko nie w połowie projektu) .

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 16:00 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Dzięki za wszystkie wyrażone opinie :) Wezmę sobie do serca rady dotyczące zasad umieszczania kodu na forum.
A odpowiadając na pytania lub też uwagi.
Jeśli chodzi o nawiasy klamrowe w funkcji wyświetlającej temperaturę, wzięły się one w tych a nie inny miejscach z prostego powodu. Na samym początku pisania, funkcja ta nie składała się z tylu warunków od razu, wszystko dodawałem po kolei. A zaczynała się ona właśnie warunkiem wyświetlającym temperaturę, z tą różnicą że nie było wtedy jeszcze zmiennych "temp" i "temp1". W miarę jak dodawałem kolejne warunki pisząc je tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

pojawiał się błąd od "else". Zamiast spojrzeć do książki żeby się upewnić co do składni, rzuciłem okiem jakim cudem nie wyświetla się błąd przy pierwszym warunku w funkcji no i oczywiście zauważyłem że nawias klamrowy jest przed "if" nie kojarząc tego w ogóle z tym, że jest to początek funkcji. No i w ten sposób powieliłem ten błąd na wszystkie inne warunki, no a że kompilator się nie burzył uznałem że wszystko jest OK.
Odpowiadając koledze stanequ:
Ad1. plan jest taki żeby ta prowizorka wieczna nie była :)
Ad2. search_sensors(); użyłem, bo docelowo mają być dwa czujniki
Ad3. timer to kolejny etap zabawy z tym kodem
Ad4. te _delay_ms(1000) wpisałem żeby sprawdzić jak wszystko działa gdy temperatura jest mierzona co jakiś większy odstęp czasu i tylko po to. Bez tego również program działa bez zarzutu.
Ad5. wcięcia się porobiły po wklejeniu kodu na forum
Ad6. :oops:
Ad7. LED_KATODY = 0xFF zostało użyte w pełni świadomie. Cały port D jest wykorzystany do sterowania wyświetlaczy.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 18:05 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

No i fajna analiza wyszła - teraz tylko poprawić wszystko i będzie śmigać aż miło ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 19:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 sie 2012
Posty: 52
Lokalizacja: Toruń
Pomógł: 1

Witam
Piękne i rzeczowe naprowadzenie kolegi staneq na prośbę kolegi Marcin_G zamieszczone na początku tego tematu. Ja tylko dodam odnośnie punktu 5) - o formatowaniu tekstu kodu. Otóż kombinacja klawiszy Crtl+Shift+F (zresztą podobnie jest w netbeans'e) formatuje cały kod pięknie go układa z wcięciami jak należy. Chociaż ja używam myszki klikając na Source->Format na belce na górze po lewej stronie.

Piotr



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2013, o 19:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

No i ja się zawsze czegoś od was koledzy moi szanowni dowiem ;) tzn wiadomo Eclipse jest ogromne i nieraz człowiekowi ciężko poczytać o tych wszystkich skrótach, czasem się wie a potem zapomni itd ;)

Znowu się ucieszyłem z tego skrótu

CTRL+Shift+F

dzięki p_zag

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: SylwekK i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO