Witajcie, napisałem w C++ z użyciem Qt program do szybkiego i wygodnego zarządzania notatkami. Po lewej stronie znajduje się lista z notatkami, po prawej pole do edycji notatki. Program ten z założenia ma pomóc szybko i wygodnie zarządzać krótkimi notatkami, szybciej niż z użyciem notatnika. Jego obsługa jest też w tym celu uproszczona do maksimum. Jak ogólnie oceniacie program pod względem praktycznego użycia oraz jakości kodu?
Kod źródłowy: https://github.com/arkadiusz97/VfNotes
Skompilowany program: https://drive.google.com/file/d/0B07MSKkbPwjBTzh1bVMyZF8zWmM/view
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408

- Rejestracja:prawie 12 lat
- Ostatnio:około 15 godzin
Techniczne:
- Zakomentowany kod - po to masz podpięty system kontroli wersji, że w razie potrzeby w historii zajrzysz co tam było - naprawdę do prezentacji nie jest on kompletnie potrzebny.
- Za bardzo oszczędzasz na białych znakach, np. tu:
stream<<ui->plainTextEditContent->toPlainText().toUtf8()
- Kod sam się komentuje, jeśli wszystko pakujesz w funkcje i metody z sugestywną nazwą - ty masz wszystko upakowane w eventy.
- Testy, testy
Nietechniczne:
5. Nie dostarczyłeś screenów, szkoda - sam nie zamierzam nic pobierać, a tak mógłbym zobaczyć jak aplikacja wygląda
6. Angielski z README
jest na niezbyt wysokim poziomie (ucięty phrasal verb allow to
i inne).
Co do użyteczności: Gratuluję, napisałeś notatnik. Nie wiem czy miałeś kiedyś styczność z programami do notatek ale na dzień dzisiejszy są one czymś więcej niż notatnikiem.
Nie jestem pewien czy proszenie o recenzję 100-linijkowych projektów to dobry pomysł.
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@spartanPAGE Jak będę w domu, to wrzucę screeny. Co do tego czy widziałem program do notatek, to pisałem ten program wzorując się trochę na pewnej aplikacji na Androida do takich notatek. Co też miałeś na myśli z pierwszym punktem? To, że komentarzy do kodu nie dodałem? W każdym razie, dzięki za uwagi.


- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Hmm... nie wiem jak w C++, bo to już jednak trochę dla mnie przeszłość ale zauważa się takie napakowanie wszystkiego do klasy MainWindow
. W zasadzie wszystko wrzucone jest do jednej tzw. god class
i o ile w tak małym projekcie nie ma problemu to w dużych to się naprawdę mocno mści. Wiem z autopsji.
Można by oddelegować jakąś klasę do obsługi plików, jakąś jeszcze inną np. do kolorowania składni etc... Miałbyś takie moduły, które mógłbyś dopisywać :)

god class
, a nie mieć i pakować wszystko do klasy formularza – a to jeszcze gorsze. :D
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@grzesiek51114: Jak by można było rozplanować takie dodatkowe klasy? Użyć jednego obiektu klasy do wczytywania plików, innego obiektu do zapisu, gdzie podawałoby się np. nazwę notatki i jej treść? O to chodzi?
@spartanPAGE: Dodałem screen.
Dzięki za uwagi. W wolnej chwili wprowadzę te zmiany :)

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Wyobraź sobie co byś zrobił gdybyś musiał np. szybko zmienić widok i podłączyć do niego całe zarządzanie danymi. Zwyczajnie masz zrobić inne GUI, a wszystko inne ma działać tak jak teraz.
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@grzesiek51114: Aha, czyli nie zmieniać samego mechanizmu działania programu, tylko zrobić inny interfejs graficzny?

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Przykład: dostarcz widokowi np.: jeno listę notatek, a cała reszta niech się dzieje pod spodem.
Chodzi o to żeby dostarczyć jedynie "interfejsy" dla widoku. Nie implementować logiki w widoku, tak jak masz teraz, a korzystać z "interfejsów" dostarczanych przez klasy realizujące logikę. Enkapsulacja logiki "biznesowej" generalnie.
Interfejsy czyli np. metody publiczne.
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@grzesiek51114: Czyli po prostu zrobić to tak, że np. wczytywanie nazw plików do listy zrobić w jednej metodzie klasy, a w drugiej metodzie zrobić wczytywanie danych z listy z nazwami plików do graficznej listy widocznej dla użytkownika?

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Widok odpytuje moduł o listę plików po czym ten moduł ową listę dostarcza. Tak jak mówię: nie wiem za bardzo jak coś takiego robi się w C++ i jakie ma do tego narzędzia np. QtCreator itp. ale generalnie podziel projekt na coś co można nazwać takimi: units of work
. @kq pomusz i podpowiedz, bo ja się też nawet chętnie dowiem: da się dla Qt zrobić coś a'la MVC? Są do tego narzędzia czy trzeba rzeźbić samodzielnie?
PS: @amb00: rzeźbienie samodzielne w sumie Ci się przyda, bo separacji logiki od widoku się przy okazji nauczysz :)

- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@grzesiek51114: Rozumiem, czyli po prostu zrobić to o czym wspominał mi ktoś inny w tamtym projekcie: https://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/290184-program_do_znajdowania_hashtagow_na_stronach_internetowych


- Rejestracja:ponad 9 lat
- Ostatnio:11 miesięcy
- Postów:4700
Dobrze by było gdybyś nauczył się programować obiektowo. Teraz ten program to taki koszmarek z jedną klasą od wszystkiego. Poza tym przydałoby się więcej opcji - import/eksport, wyszukiwanie, markdown
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@Haskell: Jeśli dobrze zrozumiałem to co napisał @grzesiek51114, to chyba by wystarczyło dać logikę do osobnych metod głównej klasy. A jeśli nie, to jak taki program rozbić na inne klasy? Bo jeśli chodzi ogólnie o moje programowanie obiektowe, to robiłem programy rozbite na klasy np. prostą bazę danych, gdzie tabele były dynamicznymi tablicami obiektów danej klasy. O ile wiem jak oddzielić logikę od GUI robiąc dodatkowe metody, o tyle nie mam pomysłu jak w przypadku tego programu zrobić podział na większą ilość klas.
- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@spartanPAGE: @vpiotr: To jak w końcu lepiej oddzielić logikę od GUI? Dać ją do osobnej klasy czy do osobnych metod klasy MainWindow?

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
amb00 napisał(a):
@spartanPAGE: @vpiotr: To jak w końcu lepiej oddzielić logikę od GUI? Dać ją do osobnej klasy czy do osobnych metod klasy MainWindow?
Poczytaj o SOLID.
No i może o OTTRTA.
Staraj się aby obsługa zdarzeń była jak najlżejsza, resztę zadań przenoś do klas pomocniczych.

- Rejestracja:ponad 8 lat
- Ostatnio:7 miesięcy
- Postów:408
@vpiotr @spartanPAGE @Haskell @grzesiek51114 Wydzieliłem logikę do osobnej klasy. Dobrze teraz jest? Czy w slotach powinno być mniej kodu? https://github.com/arkadiusz97/VfNotes
fasadin