eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingDuże pliki czy małe?
Ilość wypowiedzi w tym wątku: 21

  • 1. Data: 2014-02-04 09:07:00
    Temat: Duże pliki czy małe?
    Od: g...@s...invalid (Adam Wysocki)

    Ja staram się trzymać zasady "jeden plik - jedna klasa". Jak robię jakiś
    większy moduł, to po prostu robię mu podkatalog albo namespace i dzielę
    na pliki. A jak to jest z Wami? Pytam, bo naszła mnie taka refleksja po
    poprawianiu kodu po kimś (dobrym programiście, po prostu taki ma styl).
    Jeden duży plik (tzn. dwa - .h i .cpp), w nich jedna klasa, w tej klasie
    inne klasy (reprezentujące stany), każdy stan ma swoje podstany, które też
    są w tym samym pliku... i to się rozrasta.

    Ja implementując coś podobnego wydzieliłbym wszystkie stany do osobnych
    plików. Nie do przesady, bo jak coś jest małe, to można to pogrupować,
    żeby nie mnożyć bytów ponad potrzeby... no ale jednak.

    A jak Wy to robicie? Trzymacie się zasady "jeden plik - jedna klasa", czy
    raczej "jeden plik - jeden funkcjonalny moduł"?

    Z ekstremalnych ciekawostek - spotkałem się z plikiem .cpp 600kB.

    Proszę fira i innych świrów o nie udzielanie się w wątku.

    --
    "zanim nastala era internetu, kazdy wiejski glupek siedzial w swojej wiosce"
    http://www.chmurka.net/


  • 2. Data: 2014-02-04 10:29:55
    Temat: Re: Duże pliki czy małe?
    Od: Maciej Sobczak <s...@g...com>

    W dniu wtorek, 4 lutego 2014 09:07:00 UTC+1 użytkownik Adam Wysocki napisał:

    > Ja staram się trzymać zasady "jeden plik - jedna klasa".

    To dobra zasada. Ale...

    > Jak robię jakiś
    > większy moduł, to po prostu robię mu podkatalog albo namespace i dzielę
    > na pliki.

    Też dobrze. Ale...

    > A jak to jest z Wami?

    Podobnie. Ale...

    > Jeden duży plik (tzn. dwa - .h i .cpp), w nich jedna klasa, w tej klasie
    > inne klasy (reprezentujące stany), każdy stan ma swoje podstany, które też
    > są w tym samym pliku... i to się rozrasta.

    To też dobry pomysł.

    > Ja implementując coś podobnego wydzieliłbym wszystkie stany do osobnych
    > plików.

    A ja nie.

    Jaka jest rola tych klas w projekcie? Jeżeli one reprezentują jakieś odrębne elementy
    logiki programu, to zasługują na osobne pliki, nawet jeśli są małe w sensie linii
    kodu. Ale jeśli te klasy są jedynie technicznymi detalami jakiegoś rozwiązania, to
    należą tam, gdzie ten rozwiązywany problem.

    Powiedzmy, że masz moduł, który czasem coś musi posortować i do tego celu używa
    komparatora do funkcji std::sort. Ten komparator, pomimo tego, że jest klasą, jest
    jedynie technicznym detalem tego modułu i nie ma sensu dla niego robić osobnego
    pliku. Wręcz przeciwnie - on powinien być jak najbliżej tego sortowania.

    Ale...

    Może też się zdarzyć, że takich komparatorów będzie więcej i będą one przydatne w
    kilku miejscach - wtedy jest sens zrobić osobny plik z takimi komparatorami.

    Podobnie, jest sens zebrać razem kilka klas, które służą jako wyjątki. Nie ma sensu
    robić dla nich osobnych plików.

    Podobnie, jest sens zebrać razem klasy reprezentujące różne stany *jednego* automatu.
    Bo to jest jeden automat.

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com


  • 3. Data: 2014-02-04 11:20:00
    Temat: Re: Duże pliki czy małe?
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2014-02-04, Adam Wysocki <g...@s...invalid> wrote:
    > Ja staram się trzymać zasady "jeden plik - jedna klasa". Jak robię jakiś
    > większy moduł, to po prostu robię mu podkatalog albo namespace i dzielę
    > na pliki. A jak to jest z Wami? Pytam, bo naszła mnie taka refleksja po
    > poprawianiu kodu po kimś (dobrym programiście, po prostu taki ma styl).
    > Jeden duży plik (tzn. dwa - .h i .cpp), w nich jedna klasa, w tej klasie
    > inne klasy (reprezentujące stany), każdy stan ma swoje podstany, które też
    > są w tym samym pliku... i to się rozrasta.
    >
    > Ja implementując coś podobnego wydzieliłbym wszystkie stany do osobnych
    > plików. Nie do przesady, bo jak coś jest małe, to można to pogrupować,
    > żeby nie mnożyć bytów ponad potrzeby... no ale jednak.
    >
    > A jak Wy to robicie? Trzymacie się zasady "jeden plik - jedna klasa", czy
    > raczej "jeden plik - jeden funkcjonalny moduł"?

    W Erlangu moduł da się wpakować tylko do osobnego pliku, więc podział na
    pliki jest oczywisty. W Perlu rzadko widuję więcej niż jeden pakiet
    zdefiniowany w module, a to pakiety odpowiadają klasom. W Pythonie
    podział już wygląda inaczej: jeden moduł często zawiera kilka klas,
    a czasem też swobodne funkcje.

    Wszystko zależy od języka, zwyczajów danego środowiska programistów i od
    konkretnego problemu do rozwiązania.

    --
    Secunia non olet.
    Stanislaw Klekot


  • 4. Data: 2014-02-04 13:36:13
    Temat: Re: Duże pliki czy małe?
    Od: g...@s...invalid (Adam Wysocki)

    Maciej Sobczak <s...@g...com> wrote:

    > Jaka jest rola tych klas w projekcie? Jeżeli one reprezentują jakieś
    > odrębne elementy logiki programu, to zasługują na osobne pliki, nawet
    > jeśli są małe w sensie linii kodu. Ale jeśli te klasy są jedynie
    > technicznymi detalami jakiegoś rozwiązania, to należą tam, gdzie ten
    > rozwiązywany problem.

    Tu podział nie jest jasny. Teoretycznie są to techniczne detale jakiegoś
    rozwiązania, ale to rozwiązanie samo w sobie równie dobrze mogłoby być
    oddzielną aplikacją (zaprojektowanie i napisanie tego modułu zajęło ok.
    70 MD). Moduł ma też inne pliki (np. helpery są osobno, osobno jest też
    bezpośrednia obsługa hardware), ale sam moduł, będący maszyną stanów, jest
    w jednym dużym pliku.

    > Podobnie, jest sens zebrać razem klasy reprezentujące różne stany
    > *jednego* automatu. Bo to jest jeden automat.

    I tak jest to zrobione. Dla odmiany mój inny automat w tym projekcie (robi
    coś zupełnie innego, ale jest podobnie złożony jak ten) ma ze 40 stanów,
    pogrupowanych w namespace, każdy stan w osobnym pliku (ale jego małe
    podstany w jednym) i nie wyobrażam sobie mieć tego w jednym dużym pliku
    i jakoś tym zarządzać...

    --
    "zanim nastala era internetu, kazdy wiejski glupek siedzial w swojej wiosce"
    http://www.chmurka.net/


  • 5. Data: 2014-02-05 14:03:00
    Temat: Re: Duże pliki czy małe?
    Od: "inny punkt siedzenia..." <N...@g...pl>

    mam pomysł, zasrajmy mu wątek, jak ten ciul robi z innymi...


  • 6. Data: 2014-02-05 15:42:25
    Temat: Re: Duże pliki czy małe?
    Od: witek <w...@g...pl.invalid>

    Adam Wysocki wrote:
    > Ja staram się trzymać zasady "jeden plik - jedna klasa". Jak robię jakiś
    > większy moduł, to po prostu robię mu podkatalog albo namespace i dzielę
    > na pliki. A jak to jest z Wami? Pytam, bo naszła mnie taka refleksja po
    > poprawianiu kodu po kimś (dobrym programiście, po prostu taki ma styl).
    > Jeden duży plik (tzn. dwa - .h i .cpp), w nich jedna klasa, w tej klasie
    > inne klasy (reprezentujące stany), każdy stan ma swoje podstany, które też
    > są w tym samym pliku... i to się rozrasta.
    >
    > Ja implementując coś podobnego wydzieliłbym wszystkie stany do osobnych
    > plików. Nie do przesady, bo jak coś jest małe, to można to pogrupować,
    > żeby nie mnożyć bytów ponad potrzeby... no ale jednak.
    >
    > A jak Wy to robicie? Trzymacie się zasady "jeden plik - jedna klasa", czy
    > raczej "jeden plik - jeden funkcjonalny moduł"?
    >
    > Z ekstremalnych ciekawostek - spotkałem się z plikiem .cpp 600kB.
    >
    > Proszę fira i innych świrów o nie udzielanie się w wątku.
    >

    oddzielne pliki dla wszystkich klas uzywanych w wiecej niz jednym miejscu

    Jesli jakas klasa / struktura powstała dla wygody i jest uzywana tylko
    i wyłącznie w innej jednej klasie to nie ma sensu dzielic tego na pliki.

    Jesli "cos" moze byc wykorzystane jeszcze gdzies to ląduje w oddzielnym
    pliku.


    oczywiscie są wyjątki bo pewnych templatów nie da się skompilowac z
    głową lub nie da się skompilować w ogóle ja są oddzielnie


  • 7. Data: 2014-02-05 17:33:20
    Temat: Re: Duże pliki czy małe?
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2014-02-04 09:07, Adam Wysocki wrote:
    > Ja staram się trzymać zasady "jeden plik - jedna klasa".

    Przemigrowałem z tej zasady do zasady wywazonej: jedna klasa na plik,
    ale czesto w pliku namespace { ... } z kilkoma klasami ktore na 100% nie
    będą nigdzie potrzebne (gdyby były to byłby to bład) poza tym plikiem i
    ma to zastosowanie głównie w adapterach. Częściowo rozwiązuje to problem
    "wykradania" internalnych nagłówków przez miejsca w kodzie które sobie
    robią swobodne inkludy a które to wykradanie obecnie odbija się czkawką.

    Ogolnie im mniej sztywne zasady tym lepiej. Mam klasę (duzy visitor)
    który zajmuje w pliku koło 50kB. Czy warto go podzielić na kilka cpp
    kazdy z osobną metodą? Moim zdaniem warto nagiąć zasady i to zrobić.
    Ułatwi to czytanie dzieląc kod nie na sztuczne jednostki klas, ale na
    logiczne jednostki celu danej metody.

    Innymi słowy: jeden plik na ... coś. Niekoniecznie na klasę jesli to
    ułatwi czytelność.

    PS. Duża ilośc plików cpp z jednoczesną ślepą wiarą w szybkość PH kończy
    sie źle ...


  • 8. Data: 2014-02-06 00:38:35
    Temat: Re: Duże pliki czy małe?
    Od: Mateusz Loskot <m...@l...net>

    On Tuesday, 4 February 2014 08:07:00 UTC, Adam Wysocki wrote:
    > [...]
    >
    > A jak Wy to robicie? Trzymacie się zasady "jeden plik - jedna klasa", czy
    > raczej "jeden plik - jeden funkcjonalny moduł"?

    Jakiś czas temu gdzieś na SO napotkałem na zasadę Alexa Martelliego
    dot. organizacji plików/modułów/pakietów w Pythonie:
    logical unit of packaging, czyli kto kogo wymaga i używa.

    I mimo, że to Python, staram się to stosować jako zasadę
    w organizacji kodu (jakiegokolwiek).
    Nawet w C++, modułem może być jeden plik, para .h/.cpp jak lub więcej,

    Pozdrawiam,
    --
    Mateusz Łoskot, http://mateusz.loskot.net


  • 9. Data: 2014-02-06 08:10:18
    Temat: Re: Duże pliki czy małe?
    Od: Paweł Kierski <n...@p...net>

    W dniu 2014-02-05 17:33, Sebastian Biały pisze:
    > On 2014-02-04 09:07, Adam Wysocki wrote:
    >> Ja staram się trzymać zasady "jeden plik - jedna klasa".
    [...]
    > Innymi słowy: jeden plik na ... coś. Niekoniecznie na klasę jesli to
    > ułatwi czytelność.

    W ogólności - klasy w języku programowania nie koniecznie odwzorowują
    1:1 elementarne (w sensie logiki aplikacji, a nie implementacji)
    odpowiedzialności czy elementy funkcjonalne.

    --
    Paweł Kierski
    n...@p...net


  • 10. Data: 2014-02-06 20:41:03
    Temat: Re: Duże pliki czy małe?
    Od: witek <w...@g...pl.invalid>

    Mateusz Loskot wrote:
    > On Tuesday, 4 February 2014 08:07:00 UTC, Adam Wysocki wrote:
    >> [...]
    >>
    >> A jak Wy to robicie? Trzymacie się zasady "jeden plik - jedna klasa", czy
    >> raczej "jeden plik - jeden funkcjonalny moduł"?
    >
    > Jakiś czas temu gdzieś na SO napotkałem na zasadę Alexa Martelliego
    > dot. organizacji plików/modułów/pakietów w Pythonie:
    > logical unit of packaging, czyli kto kogo wymaga i używa.
    >
    > I mimo, że to Python, staram się to stosować jako zasadę
    > w organizacji kodu (jakiegokolwiek).
    > Nawet w C++, modułem może być jeden plik, para .h/.cpp jak lub więcej,
    >
    > Pozdrawiam,
    >

    cała teoria na dwóch stronach
    http://en.wikipedia.org/wiki/Cohesion_(computer_scie
    nce)
    http://en.wikipedia.org/wiki/Coupling_(computer_prog
    ramming)

strony : [ 1 ] . 2 . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: