Autor Wątek: Podział kodu na pliki  (Przeczytany 712 razy)

Offline slowbro

  • Użytkownik

# Lipiec 29, 2017, 12:06:29
Cześć

Pracuje obecnie nad kodem, który powoli się rozrasta. Cały kod znajduje się w jednym pliku. Ze względu na specyfikę nie używam klas w kodzie (próba napisania intra 4kb). W miarę dopisywania kodu wszystko staje się nieczytelnie i nieprzejrzyste. Dużo czasu zajmuje odszukanie właściwego intra w kodzie i zrozumienie logiki. Są może jakieś wytyczne mówiące kiedy dana cześć kodu (np. funkcja) powinna być przeniesiona do nowego pliku? Jakie są wytyczne do podziału kodu na pliku z kodem, np. w jednym pliku jest kod odpowiedzialny za coś tak, w drugim pliku kod odpowiedzialny za coś innego, itd? Macie jakieś doświadczenia i przemyślenia w tym temacie?

Pozdrawiam
« Ostatnia zmiana: Lipiec 29, 2017, 12:08:46 wysłana przez slowbro »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline slowbro

  • Użytkownik

# Lipiec 31, 2017, 00:04:36
Jakieś sugestie odnośnie posta? :)

Offline Kurak

  • Użytkownik

# Lipiec 31, 2017, 06:20:03
Nie ma co szukac wytycznych, lepiej poczytac sobie jak przebiega proces budowania programu w jezyku ktorego uzywasz, obczaic sobie kilka opensource'owych projektow (ale nie nasladowac bezmyslnie, niektore projekty maja paskudny kod :) ), a potem pisac duzo. Bedziesz nieswiadomie popelnial bledy, i nauczysz sie na czym polegaja najlepiej kiedy dotkna cie ich konsekwencje. To sie nazywa 'doswiadczenie', i jest to bardziej wartosciowe niz przestrzeganie regul tylko dlatego ze ktos tak powiedzial :)

Offline wezu

  • Użytkownik

# Lipiec 31, 2017, 13:37:31
Niezależnie od języka, części kodu, które są identyczne, powtarzające się albo przynajmniej podobne, grupuje się w funkcje. Luźny kod zamieniasz w funkcje również wtedy gdy nie możesz połapać się co dany fragment kodu robi (np 'load_level(level=7)', praktycznie nie wymaga komentarza, a 50 linii kody, który odszukuje plik zip na dysku, rozpakowuje go do tymczasowego folderu, wczytuje z niego plik xml, rozpakowuje dane z xml do odpowiednich typów, potem wczytuje modele, tekstury, dźwięki na podstawie tych danych i zapisuje je w odpowiednich zmiennych... ). Każdy problem da się rozwiązać dodając kolejny poziom abstrakcji ;)

Funkcje, które działają na tym samy zestawie wartości (''obiekcie"), grupuje się w klasy. Każdą klasę wsadzasz w oddzielny plik (chyba, że masz jakiś dobry powód by wsadzić wiele klas do jednego pliku, np. pomocnicze klasy).

Puryści Javy powiedzą ci, że klasy grupuje się w hierarchie or najbardziej ogólnych (abstrakcyjnych) do najbardziej szczegółowych. (np. Obiekt->Obiekt Materialny->Zwierzę->Zwierzę Lądowe->Czteronożne->Kot->Felix). Ale kto by tam chciał pisać w Javie? Z resztą szanse, że ta hierarchia będzie ci do czegoś potrzebna są znikome (You're Not Gonna Need It). Olej to, nie pisz w Javie zostań Pythonistą.

Jeśli jakaś grupa funkcji dotyczy czegoś podobnego, ale nie koniecznie ma jakiekolwiek wspólne dane, to lepiej zamiast klas z samymi statycznymi metodami nazwać to wszystko modułem albo pakietem i trzymać razem w jednym pliku.

Jak już masz wszystkie klasy, funkcje i moduły 'biblioteczne' porozrzucane po różnych plikach to jest ci jeszcze potrzebny główny plik (main) który uruchomi program i do niego importujesz wszystko co trzeba.