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



Teraz jest 14 gru 2018, o 14:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 7 gru 2018, o 22:20 
Offline
Nowy

Dołączył(a): 25 sie 2018
Posty: 8
Pomógł: 0

Wątek zaczął się pod filmikiem na youtubie, ale Mirek poprosił o przeniesienie go tutaj - faktycznie - może powstanie jakaś fajna dyskusja.

W ostatnim filmiku (MK_WIFI232 part1) Mirek podał małą, ale ważną rzecz poprawiającą czytelność w kodzie - "głupi" separator pomiędzy bibliotekami systemowymi, a naszymi/niestandardowymi. Nie tylko to ładnie oddziela je, ale też wymusza stosowanie takiego podziału. Mnie natomiast zaczęło interesować coś trochę "poziom wyżej" - jak ułatwić innym pooruszanie się po projekcie - jak organizować sobie katalogi z bibliotekami/includami - jak mamy większy projekt na kilka(naście) bibliotek to fajnie byłoby spojrzeć na drzewo katalogów i mieć taką czytelność jak wyżej uzyskaliśmy przy #include.

Tu jest wiele różnych metod, raczej nie ma idealnych. Spotkałem się z taką, że wszystkie rzeczy "uniwersalne" wrzucamy do katalogu typu "drivers". Dla kogoś kto chciałby zobaczyć jak działa logika aplikacji są one zbędne na początku - stąd jakby je "ukrywamy" przed nim pod innym katalogiem katalogiem, dzięki czemu na pierwszy rzut oka widzi to co najważniejsze :)

W YellowBooku (strona 117 i rozdział 1.11.7) mamy fajnie pokazane jak dodanie katalogów zwiększa czytelność w plikach biblioteki. A jakie podejście stosować do całego projektu? Masz może Mirku jakiś swój sposób? Bo na youtubie bibiloteka WIFI232 i uartów była w tym samym katalogu co plik main - zapewne dla malutkich projektów, czy tych pokazowych na yt jest to ok metoda, ale jak to u Ciebie wygląda w większych? (nie przerobiłem jeszcze całego YB - może trochę się pospieszyłem i gdzieś dalej będzie odpowiedź na to pytanie)

W sumie to nie jest temat tylko dla AVRów, ale taki "ogólnoprogramistyczny".

W sieci jest też kilka wątków na podobny temat:
https://stackoverflow.com/questions/17143835/embedded-c-file-structure-suggestions - gdzie główny katalog ma "3 warstwy" - aplikacji/transportowa/hal.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2018, o 02:13 
Offline
Moderator
Avatar użytkownika

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

kowal11 napisał(a):
W YellowBooku (strona 117 i rozdział 1.11.7) mamy fajnie pokazane jak dodanie katalogów zwiększa czytelność w plikach biblioteki.

No tak - bo tak jak piszesz, to była jedna ale dość spora biblioteka i warto było ją jakoś podzielić na pewne logiczne fragmenty

kowal11 napisał(a):
Masz może Mirku jakiś swój sposób? Bo na youtubie bibiloteka WIFI232 i uartów była w tym samym katalogu co plik main

hmm no tak ale to wynika z tego, że ciężko byłoby włączyć bibliotekę WIFI232T do folderu MkMultiUART pomimo tego że ona jakby korzysta z MkMultiuart ... dlaczego byłoby ciężko włączyć ? No bo przecież MkMultiUART można jako osobną część używać w każdym projekcie, a gdyby w tym samym folderze kryła się dodatkowa biblioteka WIFI no to człowiek by ją niechcący kopiował i ciągnął za sobą niepotrzebnie w projektach w których nie byłoby nic wspólnego z WIFI

kowal11 napisał(a):
Masz może Mirku jakiś swój sposób?

Niestety nie mam i raczej nie spotkałem się z innym sposobem niż z tym, żeby konkretna biblioteka (hmmm ala biblioteka - bo tylko umownie taki folder można nazywać biblioteką) - była osadzona we własnym folderze w głównym korzeniu projektu

Nie będę się sprzeczał czy rozwiązania typu:

Cytuj:
gdzie główny katalog ma "3 warstwy" - aplikacji/transportowa/hal.

są dobre czy złe - bo pewnie co programista to inne podejście ....

a nawet w tym linku który podałeś widać, że różne osoby mają różne podejścia ...


Nie wydaje mi się, żeby dobrym pomysłem było rozdzielanie np jednej ala biblioteki na warstwę abstrakcyjną i fizyczną które to miałyby leżeć w całkiem różnych folderach projektu - bo robi się niezły bajzelek.

Oczywiście wadą takiego rozwiązania które przecież nie tylko ja prezentuję ale chyba większość ludzi piszących w C na procki - to podział na pseudo biblioteki wydzielone do własnych folderów i ew wewnątrz nich podfoldery - jeśli w jakiejś bibliotece można wydzielić pewne jasne moduły logiczne - tak jak wspomniałeś o przykładzie z YB ze strony 117.

kowal11 napisał(a):
(nie przerobiłem jeszcze całego YB - może trochę się pospieszyłem i gdzieś dalej będzie odpowiedź na to pytanie)

Nie nie - nie poruszam tego w YB - bo hmmm może się mylę , ale chyba nie ma na to jakiegoś uniwersalnego i innego środka w C

_________________
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: 8 gru 2018, o 19:03 
Offline
Nowy

Dołączył(a): 25 sie 2018
Posty: 8
Pomógł: 0

No właśnie też mi się wydaje, że nie ma żadnego uniwersalnego podejścia, a jak są duże projekty to jednak aż się o to prosi, żeby to podzielić zamiast scrolować po workspace.
Dwie rzeczy mi się jeszcze nasunęły przy okazji w tym temacie:
1. jak szukałem właśnie o tej organizacji katalogów to w kilku widziałem wydzielone katalogi do Unittestów - czy zajmowałeś się tą tematyką/masz jakąś opinie o tym?
2. jeśli można zapytać jak u Ciebie wygląda organizacja bibliotek? Gdzieś katalog ze wszystkimi + potem z niego kopiowanie do aktualnych? Czy może jakieś dowiązania/linkowanie przez eclipse? + jak to potem wygląda z aktualizacjami/poprawkami? Pytam, bo sam chciałbym to jakoś ogarnąć u siebie i im więcej się metod pozna tym łatwiej potem wybrać odpowiednią dla siebie.
Sorki, że to taki trochę "wywiad" się zrobił z tego wątku



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2018, o 19:46 
Offline
Nowy

Dołączył(a): 05 wrz 2018
Posty: 13
Pomógł: 0

Dylematy które opisujecie często znajdują swoje rozwiązanie w momencie gdy do gry wprowadzi się testowanie. Nagle okazuje się że warstwowość ma sens a S.O.L.I.D. działa (co zaskakujące) także dla C https://pl.wikipedia.org/wiki/SOLID_(pr ... _obiektowe)

Warto zerknąć na dobre praktyki w jądrze GNU/Linux. To jeden z większych projektów w C dostępnych publicznie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2018, o 02:18 
Offline
Nowy

Dołączył(a): 25 sie 2018
Posty: 8
Pomógł: 0

Mógłbyś coś więcej napisać na ten temat? A też odnośnie testów na forum jest równe 0 tematów :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2018, o 15:09 
Offline
Nowy

Dołączył(a): 05 wrz 2018
Posty: 13
Pomógł: 0

Temat jest bardzo rozległy. To jest trochę tak jak pytanie "czy możesz coś napisać jak się programuje". Albo będzie to naskórkowe albo w gąszczu szczegółów umknie idea. Dość że warto zainteresować się metodyką TDD (ang. Test-driven Development) i zacząć od testów jednostkowych.

Testy jednostkowe są na najniższym poziomie. Testują pojedyncze "atomowe" funkcjonalności. Wyżej masz integracyjne i na końcu akceptacyjne lub jak niektórzy wolą E2E (ang. End to End). W zależności od charakterystyki modułu, powstaje piramida testów. Jeśli moduł jest "bardziej zapisz", piramida będzie klasyczna. Na dole wiele testów jednostkowych, E2E niewiele. Jeśli "bardziej odczyt / raportowanie", piramida będzie odwrócona. Dla modułów mieszanych, nie będzie piramidy tylko "klocek testów" ;-)
Przyjmuje się ogólną zasadę odzwierciedlenia hierarchii katalogów projektu w katalogach testów 1:1.
Tu można jeszcze pisać długo...

A co do S.O.L.I.D., na ten temat literatury jest naprawdę wiele a programowanie modularne w C już od dawna zadomowione. Reguły hermetyzowania kodu także są dość jasne.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2018, o 20:27 
Offline
Nowy

Dołączył(a): 25 sie 2018
Posty: 8
Pomógł: 0

Czyli stosując to - wtedy każdy moduł ma swoje testy i jest trzymany osobno i to nam wymusza podział katalogów dla każdego? Ale już szczegóły są per firma, czy jest to jakiś w miare standard i można to znaleźć na przykładach? Jakieś hasła do wyszukania czegoś więcej?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2018, o 22:24 
Offline
Nowy

Dołączył(a): 05 wrz 2018
Posty: 13
Pomógł: 0

Wiesz co... zacznij od tego. Bo jak podał bym jakieś linki do norm czy standardów, nie wiem czy było by to efektywne. https://pragprog.com/book/jgade/test-dr ... embedded-c



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2018, o 09:58 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 749
Lokalizacja: Kraków
Pomógł: 63

O metodzie TDD można szerzej poczytać na blogu https://ucgosu.pl/
Dotyczy on wprawdzie projektów na STM32, ale ogólną zasadę można przyjąć również dla innych procków.
W jednym z tematów jest też opisany szablon projektu (dla STM32F4) z podziałem na różne warstwy i z dołączonymi testami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2018, o 18:28 
Offline
Nowy

Dołączył(a): 25 sie 2018
Posty: 8
Pomógł: 0

Dziękuję - przejrzę wszystko!

Mirek przeoczył chyba wątek :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2018, o 18:55 
Offline
Moderator
Avatar użytkownika

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

kowal11 napisał(a):
Mirek przeoczył chyba wątek :/

Absolutnie nie przeoczył ;) ale zawsze się Mirek wyłącza gdy zaczyna się Ą, Ę ... chrum, scrum, i nie wiadomo co ... podczas gdy się samemu tworzy projekty - ... no to króciutko ;) ..... "bez przesady"

tzn może inaczej żebym nie został źle zrozumiany - OCZYWIŚCIE, że testy jednostkowe są ważne, itp itd ale .... Panowie - przykładajmy odpowiednią miarę do skali


krótko mówiąc, gdy się samu zaczyna dopiero drogę, a SZCZEGÓLNIE gdy samemu się tworzy projekty "dla siebie" .... to wchodzenie w SCRUM .... (z całkiem innego wątku w tzw "chrum chrum") ... to po prostu przerost formy nad treścią ...

Mi się wydaje, że WSZYSTKO PO KOLEI .... tzn ?

Najpierw nauczyć się podstaw ... a później gdy zaczynamy pracę w ZESPOLE (uwaga w ZESPOLE) ... wtedy można o wiele łatwiej zrozumieć i poznać metody SCRUMi wszystkie inne tego typu zasady ....

Z punktu widzenia początkującego - próba opanowania ... zaawansowanych metod pracy grupowej zwykle (choć nie zawsze) spełza na niczym .... bo dopiero PRAKTYKA pozwala opanować kolejne etapy

Krótko mówiąc, tak jak napisał i SŁUSZNIE kolega dziobak7

dziobak7 napisał(a):
Wiesz co... zacznij od tego. Bo jak podał bym jakieś linki do norm czy standardów, nie wiem czy było by to efektywne.


zacznij od mniejszych kroków bo się być może - zakręcisz. Jak mówię być może - bo każdy z nas jest inny

Proponuję ci (kolego kowal11) przyjrzyj się np zaawansowanemu i UWAGA - MULTIPLATFORMOWEMU projektowi pewnego Japończyka o nicku "elm-chan" jak chodzi o Fat-FS albo nawet PetitFS ... spróbuj ogarnąć kod źródłowy który przepięknie ma rozdzielone warstwy abstrakcyjne od fizycznych ;) ... jak chodzi o kod źródłowy (jak mówię dla różnych rodzin procków) ... to może tobie ... coś więcej to powie ok? - to taka moja luźna propozycja

a jeśli chodzi o "elm-chan'a" to jest się na czym wzorować - mówię ci ;)

_________________
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: 10 gru 2018, o 19:24 
Offline
Nowy

Dołączył(a): 25 sie 2018
Posty: 8
Pomógł: 0

Tylko gorzej jak się jeszcze nie ma firmowego doświadczenia i chce ze znajomymi coś porobić - wtedy brakuje tego i chyba lepiej już być jakoś zaznajomiony z tym - tak mi się wydaje - stąd te wszystkie pytania. Bo na roku/kole naukowym projekty grupowe to czasem jak zespół w pracy - takie podejścia sprawdzone by zapewne ułatwiły wiele. A jak już napisałem - materiałów z przykładami o tym niewiele ogólnie, a o testach na forum niestety/stety zero, sprawdzę ta książke co tu kolega polecił. Może to jest pomysł na fajny rozdzialik do kolejnego (orange?) booka?
Z FatFSem fajny przykład - korzystałem na podstawie BB - bardziej się temu teraz przyjrzę.

A abstrahując od idei "chrum-chrum" - czy mógłbyś opisać jak to wszystko u Ciebie wygląda (te pytania wcześniejsze co zadałem). W końcu jak już się uczyć to od ludzi z wieloletnim doświadczeniem :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2018, o 20:46 
Offline
Moderator
Avatar użytkownika

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

Ja niestety większość programów dla procków piszę sam - nie w zespole.

Pracy zespołowej doświadczyłem dużo wcześniej przy pisaniu softów na PC, ale co firma, co korporacja to inny obyczaj i własne wewn. szkolenia - i dlatego piszę, że nie ma tak na prawdę żadnych wielkich górnolotnych zasad pracy zespołowej poza tymi jakie konkretny zespół sobie ustali.

_________________
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: 10 gru 2018, o 23:23 
Offline
Nowy

Dołączył(a): 05 wrz 2018
Posty: 13
Pomógł: 0

Nie bardzo rozumiem co ma SCRUM do testów czy nawet do pierwotnego pytania? Kolega pyta raczej o zasady modularyzacji i organizacji katalogów projektu czyli elementów "fizycznych" (w sensie programowania) projektu. Ewentualnie zbacza w kierunku "jak wygląda stan rzeczy dziś?". SCRUM to jedna (z wielu) metodyk wytwórczych. Z aspektami technicznymi nie ma bezpośredniego związku.

A co do meritum: https://embeddedartistry.com/ tu warto zerknąć na zasoby (Resources) oraz poczytać trochę wpisów w blogu... a jest to jedna z niezliczonej ilości stron które prezentują dobre techniki, stan branży na dziś, zawierają referencje do dobrych merytorycznie materiałów. Nie sądzę by prawdą było zdanie "brak jest materiałów"... a wcale nie jedyna czy rozwiewająca wszystkie wątpliwości "krynica wiedzy".

Ogólnie warto zerknąć do projektów na github'ie. Projekty tam umieszczone mają swoją historię, zgłaszane i rozwiązywane zagadnienia, informację o rozgałęzieniach projektu i ew. błędach. Znajomość git'a dziś nawet dla początkującego to podstawa. Tam jest 6 komend do opanowania. Tym bardziej że ładnie integruje się z Eclipse tu polecanym.

Co do modularyzacji i technik integracji kodu w C: https://www.amazon.com/Interfaces-Imple ... 0201498413
Niegłupie podsumowanie gdzie zerkać jeśli chodzi o narzędzia i stan rzeczy. Wprawdzie dla 2016 ale na początek i tak otwiera wiele drzwi w głowie: https://matt.sh/howto-c
Bardzo dobra pozycja o nowoczesnym C z podziałem na "poziomy zaangażowania". Od poziomu 2 zaczynają się zagadnienia modularyzacji: http://icube-icps.unistra.fr/index.php/File:ModernC.pdf

Ok.. kończę bo wyszło spore..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2018, o 23:46 
Offline
Moderator
Avatar użytkownika

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

dziobak7 napisał(a):
Nie bardzo rozumiem co ma SCRUM do testów czy nawet do pierwotnego pytania?


Nie nie - przepraszam to nie było do ciebie - to tak do niegdysiejszej sytuacji na forum, zrobiłem skrót myślowy a pewnie nie wszyscy pamiętają, nie ważne.

Te informacje które podajesz - są bardzo w porządku ...

_________________
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: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 1 gość


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