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
No cóż, Evernote, czy OneNote mi tym nie wygryziesz ;p
Jest spoko, ale apka prosi się przede wszystkim o skróty klawiszowe.
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ł.
@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.
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ć :)
@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 :)
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.
@grzesiek51114: Aha, czyli nie zmieniać samego mechanizmu działania programu, tylko zrobić inny interfejs graficzny?
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.
@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?