@MDW, post #1
A jeżeli chodzi o GitDesktop to od ładnych kilku wersji naprawdę nie potrafię się do niczego już przyczepić. Są jeszcze funkcje dla których trzeba jeszcze otworzyć CLI ale to nie problem, bo to są rzadziej robione operacje.
@MDW, post #1
Git uzupełniony o GitDesktop to świetne rozwiązanie dla każdego programisty, który przez ostatnie 30 lat choćby raz wyszedł z jaskini.Moim zdaniem to nieprawda. Przy hobbystycznym projekcie, gdzie nad kodem pracuje jedna osoba, git to często podstawienie sobie nogi. Uważam, że to mocno przekombinowane narzędzie. Rozumiem, że wszystkie jego zalety wychodzą przy dużych projektach rozwijanych przez wieloosobowe zespoły, ale... właśnie. Trzymam kody na GitHubie, bo to modne, ale trochę wbrew sobie. Oczywiście to, że na klasyczną Amigę nie ma gita i za pośrednika robi Linux, czyni sprawę jeszcze mniej wygodną. Dla mnie każda chmurowa składnica plików z historią wersji jest wygodniejsza niż git.
@Krashan, post #3
Moim zdaniem to nieprawda. Przy hobbystycznym projekcie, gdzie nad kodem pracuje jedna osoba, git to często podstawienie sobie nogi.
@MDW, post #4
Osobiście zrobiłbym setki karygodnych błędów gdyby nie to, że przed scommitowaniem przeglądam zmiany. Pisząc dodaję tony tymczasowych zmian. Po zakończonej implementacji to absolutnie nie nadaje się do archiwizacji bez wyczyszczenia tego wszystkiego. Bez podglądu zmian takie czyszczenie jest niemożliwe.
Nawet robiąc coś sam często mam osobne branche na jakąś funkcjonalność. Do historii wracam niezbyt często ale jednak czasem się przydaje i bywało, że szukałem po jakiej zmianie coś mi się skopało.
@MDW, post #4
@Hexmage960, post #6
@michal_zukowski, post #7
@Hexmage960, post #5
Czy mógłbyś napisać proszę na czym polega owo czyszczenie?
#define USE_MIPMAPPING
#define USE_MIPMAPPINGa
@MDW, post #9
@Hexmage960, post #11
mam głównie problem z nazywaniem rzeczy. I to odnosi się do nazw plików, a nawet struktur, funkcji bądź komunikatów wpisywanych w logu
@Hexmage960, post #6
A z tego co wiem, rozwija Pan swój silnik i narzędzia w C++ pod kontrolą Gita i wychodzi Panu to świetnie.
Może dzięki poradom od doświadczonych programistów będę w stanie się więcej nauczyć jeśli chodzi o efektywne użycie Gita i RCS.
@Hexmage960, post #11
... ale mam głównie problem z nazywaniem rzeczy. I to odnosi się do nazw plików, a nawet struktur, funkcji bądź komunikatów wpisywanych w logu. Cały czas to przemianowuję. Problem drugi to tak jak wspomniałem błędy konstrukcyjne - przykładowo zapominam czegoś uwzględnić. Problem trzeci to protokoły funkcji (lista parametrów). Ale to akurat rozwiązuję ostatnio dodając do listy parametrów wszystkie deklaracje zmiennych lokalnych, po to by funkcja była możliwie uniwersalna.
Takie podejście w programowaniu w języku Ansi C ma swoje wady i zalety, które warto rozważyć.
Zalety:
- Uniwersalność funkcji: Dodając wszystkie deklaracje zmiennych lokalnych do listy parametrów, funkcja może stać się bardziej uniwersalna i elastyczna, co pozwala na jej ponowne wykorzystanie w różnych kontekstach.
- Lepsza czytelność w niektórych przypadkach: Wszystkie zmienne, które są używane przez funkcję, są jawnie zadeklarowane w jej sygnaturze. Może to poprawić czytelność, ponieważ od razu widać, jakie dane są przekazywane do funkcji.
- Unikanie globalnych zmiennych: Takie podejście może pomóc w ograniczeniu używania globalnych zmiennych, co z kolei zmniejsza ryzyko błędów związanych z ich niewłaściwym użyciem.
Wady:
- Przerost sygnatury funkcji: Gdy lista parametrów jest bardzo długa, sygnatura funkcji staje się trudna do zarządzania i może być myląca. Długie listy parametrów mogą też prowadzić do błędów przy wywołaniach funkcji.
- Słaba modularność: Zamiast enkapsulować logikę i zmienne w funkcji, wyciąganie zmiennych na zewnątrz może prowadzić do mniej modularnego kodu. W efekcie funkcje mogą stawać się mniej czytelne i trudniejsze do utrzymania.
- Trudności z utrzymaniem: Kiedy zmienia się liczba lub typ zmiennych lokalnych używanych przez funkcję, trzeba również zmieniać wszystkie miejsca, w których funkcja jest wywoływana, co może prowadzić do błędów i zwiększa nakład pracy.
- Potencjalne problemy z wydajnością: Przekazywanie dużej liczby parametrów przez wartość może obniżyć wydajność programu, szczególnie jeśli są to struktury danych o dużej wielkości.
Alternatywne podejścia:
- Struktury danych: Zamiast przekazywać dużą liczbę parametrów, można zgrupować je w struktury danych. To zmniejsza liczbę parametrów i poprawia czytelność.
- Globalne zmienne z ograniczonym zakresem: Jeśli nie można uniknąć używania globalnych zmiennych, warto ograniczyć ich zakres do minimum, na przykład poprzez stosowanie static do zmiennych w plikach źródłowych.
- Podział funkcji na mniejsze: Rozbicie dużych funkcji na mniejsze, bardziej wyspecjalizowane może pomóc w zachowaniu przejrzystości i modularności.
Podsumowując, choć dodawanie wszystkich deklaracji zmiennych lokalnych do listy parametrów może w niektórych przypadkach zwiększyć uniwersalność funkcji, ma to również swoje wady. Warto zastanowić się nad alternatywnymi podejściami, które mogą lepiej spełniać potrzeby projektu i poprawiać jakość kodu.
@Rafael/ARMO, post #14
@Hexmage960, post #15
Pozostałe wady nie są według mnie prawdziwe. Kiedy funkcja ma sporo istotnych parametrów, to jak najbardziej jest modularna, tzn. stanowi część którą można łączyć z dowolnymi innymi.
Każda klasa lub moduł powinien mieć tylko jedną odpowiedzialność. W kontekście funkcji, oznacza to, że każda funkcja powinna mieć jasno określony cel i powinna wykonywać tylko jedno zadanie.
Zastosowanie: Unikaj tworzenia funkcji, które mają zbyt wiele parametrów i odpowiedzialności. Zamiast tego, podziel funkcje na mniejsze, bardziej specjalizowane jednostki, które można łatwiej testować i utrzymywać.
@Rafael/ARMO, post #16
Ja osobiście uważam że jak coś jest do wszystkiego to jest .. do niczego.
Tutaj może mieć zastosowanie tzw zasada Single Responsibility Principle (SRP) - Zasada Pojedynczej Odpowiedzialności