Prośba o wskazanie największych błedów

Prośba o wskazanie największych błedów
0

Witam,
Z C# mam styczność ok.6 miesięcy lecz nie jest to czas intensywnej nauki każdego dnia, ze względu na studia jest to niewykonalne ale 2 razy w tygodniu staram się coś pisać no i czytać książkę przeznaczoną do nauki tego języka. W załączniku przesyłam wam mój program, który napisałem przez święta jest to przykład banalnej biblioteki/sklepu z oddzielnym panelem dla admina i oddzielnym dla użytkownika, z tego co gdzieś czytałem main powinien być jak najkrótszy mi się to w ogóle nie udało chciałbym abyście mi doradzili na podstawie tego programu jak mógłbym to zrobić, mam dużo "case-ów" nie wiedziałem jak potem wyodrębnić z tego metody. Ogólnie estetyka na pewno też nie zachwyca. Prosiłbym o jakieś cenne rady nie typu to nie dla Ciebie ten program jest do d**y rzuć programowanie itd (Znaczy się program jest do d**y może być ale potem daj cenną rade jak coś poprawić, a nie jak zrezygnować ). Nie wiem czy to możliwe żebym do września na tyle rozwinął swoje umiejętności w tym języku żeby dostać się na staż, jeżeli tak to też powiedzcie w, którym kierunku iść przez najbliższe miesiące.

NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
2

Oj, chyba ktoś to mało przetestował... (komentarz do ProBook, bo ten pierwszy załącznik nie ma rozszerzenia i nie wiem, co z nim zrobić)

Uwagi użytkownika:

  1. Kiedy jest lista wyboru {szukaj, zaproponuj, pokaż koszyk}, nie ma możliwości "powrotu" np. wylogowania.
  2. Aha, jest... Wybrałam szukanie według tytułu, wpisałam bzdurny tekst i zapytało, czy chcę się wylogować. Powinien raczej być komunikat, że nie ma takiego tytułu, a opcja wylogowania powinna być na liście wyboru.
  3. Brakuje możliwości zamknięcia aplikacji inaczej niż przez kliknięcie krzyżyka. Też dodać do listy opcji.
  4. Wybrałam szukanie według autora i wpisałam bzdurny tekst, zero wyników. Zapytało, czy chcę wypożyczyć którąś z tych książek i jeszcze brniemy w to dalej - którą pozycję chcę. Powinno być zabezpieczenie sprawdzające, czy są wyniki i możliwość powrotu do menu z szukaniem itd. A jeśli już wpisuję pozycję i jej nie ma, to wolałabym móc wpisać inną, a tu od razu pada pytanie, czy wylogować.
  5. Nie ma możliwości usunięcia czegoś z koszyka.
  6. Przydałaby się możliwość sprawdzenia, jakie książki w ogóle są. Ja akurat szczęśliwie trafiłam bez patrzenia w kod. :D
  7. Aplikacja się wywala, gdy poda się nieprawidłowe dane logowania.
  8. Wpisanie roku, który nie jest liczbą, pozwala na dodanie książki mimo to. Generalnie podawanie danych nieprawidłowych powinno skutkować sensownym komunikatem i możliwością poprawienia tych danych lub anulowania akcji, ale wstrzymywać dalsze przetwarzanie.
  9. Można usunąć wszystkie konta, w tym admina. :]
  10. Komunikaty zawierają błędy językowe.
    Uwagi programistyczne:
  11. Skoro jesteś nowicjuszem, to można wybaczyć, ale lepiej nazywać klasy, metody itd. po angielsku, tak jak w klasach itd. już istniejących w języku.
  12. Brak konsekwencji w nazewnictwie. Tak jak z angielskim, warto stosować konwencje z języka programowania. Nazwy klas i właściwości zaczynać od wielkiej litery, pola prywatne i parametry metod od małej.
  13. Klasa Book: jest tam definicja operatora, którego sensu nie rozumiem, poza tym on tylko rzuca wyjątek NotImplemented - to chyba przeoczenie?
  14. Klasa ISBN - po co? ISBN to jest integralna cecha książki.
  15. Klasa Autor ma jedną właściwość na imię i nazwisko. To są dwie dane, powinny być osobno, zwłaszcza że ma to sens w życiu - częściej pamięta się samo nazwisko autora i według niego się szuka.
  16. Klasa Biblioteka: nigdzie nie jest używany konstruktor. Ponadto zawiera tylko dane statyczne. Jako nowicjusz mógłbyś zrobić z niej klasę statyczną, bo mamy tylko jedną bibliotekę, ale "w życiu" bardziej elegancko byłoby wzorcem projektowym Singleton (podejrzewam, że nie masz pojęcia o wzorcach, ale do dobrej pracy w którymś momencie jest to niezbędne).
  17. Klasa Book: konstruktor bez parametrów nie jest nigdzie używany. W związku z tym niepotrzebnie są inicjalizowane Autor i Wydawnictwo, skoro wszystkie używane konstruktory coś do nich przypisują.
  18. Wydawnictwo w ogóle może być prywatne, nikomu nie jest potrzebne.
  19. Klasa Konta: nazwa powinna być w liczbie pojedynczej. ZbiorUzytkownikow nie powinien się tu znajdować, mimo że zawiera konta. Poza grupowaniem danych w klasy na podstawie tego, czy dotyczą tego samego "tematu", powinno się brać pod uwagę zależności między klasami. Dane użytkowników sensownie jest przechowywać w bibliotece i to ona powinna mieć taką właściwość.
  20. Metody takie jak Pobierzhasło są charakterystyczne dla Javy. W C# do prostego pobierania danych (kiedy jest samo return lub jakieś drobne przetwarzanie np. sklejanie stringów) zwykło się używać właściwości.
  21. Klasa Program: zmienne koniec i zakoncz mogą mieć tylko 2 wartości, więc powinny być typu bool.
  22. Nazwy metod itd. powinny odzwierciedlać, do czego dany twór służy. convert1, Dual, Logowanie nie mówi nic. Numerowanie zmiennych to jest zły pomysł ogólnie.
  23. Opcje z case też można wydzielać do osobnych metod. Niekoniecznie z każdego case, ale chociaż z tych najbardziej zewnętrznych, które są bardzo rozbudowane. Sygnałem do tworzenia osobnych metod są zawarte już w kodzie komentarze - zakładanie konta, logowanie itd. Wtedy się main bardzo skróci. Obecnie ciężko całkowicie ogarnąć, co ta kobyła robi.
  24. Wprowadzenie danych początkowych (książki, użytkownicy) też do osobnej metody, bo nie ma ścisłego związku z dalszymi działaniami.
  25. Odpowiedź na pytanie o chęć wylogowania jest sprawdzana tylko pod kątem, czy wpisano "nie" (jakąkolwiek wielkością liter). Każdy inny tekst jest traktowany jak "tak". To powinno być sprawdzane dokładniej - jak wcześniej podałam, w przypadku nieprawidłowego tekstu (ani "tak", ani "nie") powinien być komunikat o nieprawidłowości i pytać do skutku.
    Ogólnie mam wrażenie, że chciałeś dobrze i dać dużo funkcji, ale chyba od razu pisałeś kod zamiast przemyśleć te funkcje. Warto zrobić sobie na początek jakiś plan w formie punktów czy rysunku, gdzie będzie rozpisane, co użytkownik może zrobić i dokąd przejdzie w każdym przypadku. Potem te kroki stopniowo wprowadzać i po każdym dodanym sprawdzać, czy to faktycznie działa zgodnie z planem.

(konto nieaktywne)
0

Jestem serio pod wrażeniem, że chciało Ci sie aż tyle napisac i wypunktować moje błędy, oczywiscie jestem Ci za to bardzo wdzięczny bo bałem sie troche, że nikt mi nic bie odpowie widząc ilośc pobrań, a brak odpowiedzi☺️ Odnośnie programu to postaram sie poprawić te wszystkie rzeczy, część z tych błędów jest spowodowana tym, że podczas programy i dodawania kolejnych opcji mój "main" sie rozrastał i ta nieświadomości czy na sile próbować robic z tego metody czy zostawić tak jak jest nie dawała mi spokoju i musiałem juz sie kogos doradzić

AreQrm
  • Rejestracja:prawie 11 lat
  • Ostatnio:27 dni
  • Lokalizacja:Londyn
  • Postów:873
0

Szaczun dla @ness ze jej się chciało :)

CO do tego jak pisać kod polecam książkę Clean Code wujka Boba. To nic że to Java, to nic, jeśli nie zrozumiesz wszystkiego albo tylko zaczniesz przeglądać na początku.

Co do studiów - nie potrzebujesz skończyć informatyki żeby zostać programistą.
Są programiści po telekomunikacji, automatyce, fizyce... i bez studiów też.


0

A jakies konkretniejsze rady?

T9
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 6 lat
  • Postów:329
0

Ta z clean code była konkretna, ksiazka refactoring też jest okey, bedzisz miał na czym poćwiczyć ;) .Staraj się nie robić żadnych powtórzeń jeśli gdzieś masz 2 razy ten sam kod wydziel to na osobną metodę. I nie pisz klas bez metod, do daj ksiązke, usuń ksiązke można przerzucić do klasy biblioteka. I masz tam pełno błędów bo nie sprawdzasz warunków brzegowych, można w prowadzić na książkę o ujemnej cenie. zamist try parse conver itd możesz wrzucić try parse od razu do if'a.

edytowany 1x, ostatnio: topik92
0

Chodziło mi o rade, co muszę jeszcze ogarnąć żebym od września mógł się starać o jakiś staż, rzeczy zaproponowane przez was wdrożę w życie ale co więcej ogarniać przez najbliższe miesiące żeby ktoś w ogóle chciał ze mną rozmawiać, jak uda mi się poprawić tą aplikację wstawię ją ponownie do oceny, a teraz chodzi mi bardziej o to czy np czy osoba idąca na staż musi ogarniać coś z MVC, bazy danych itp. ?

AreQrm
  • Rejestracja:prawie 11 lat
  • Ostatnio:27 dni
  • Lokalizacja:Londyn
  • Postów:873
0

Polecam książkę
Adam Freeman Pro ASP.NET MVC X
Gdzie X to wersja, im nowsza tym lepiej, ale nawet z 4 będzie OK dla Ciebie.


NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
1

Też polecam Freemana do MVC. Osoba idąca na staż niekoniecznie musi akurat to umieć, zależy od firmy docelowej. Można pisać w ASP.NET MVC, ASP.NET WebForms, WinForms, WPF - to są alternatywy, ewentualnie w ramach jednej firmy może być więcej niż jedno, ale nie słyszałam, żeby ktoś używał wszystkich. Oczywiście, im więcej się zna, tym większy wybór pracy. Bazy danych na pewno wypada znać chociaż w podstawowym stopniu, w przypadku .NET naturalnie najlepiej iść w SQL Server i Entity Framework.


(konto nieaktywne)
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0

Do tego, co napisała @ness należy dodać, że obecnie coraz częściej backend jest jakimś restowym API, czyli WebAPI w przypadku .NET, natomiast po stronie klienta stoi jakiś modny framework typu Knockout, Angular, React, czy co tam w Jsamour pisali w tym miesiącu.

A tak ogólnie, to wzorce projektowe i dobre praktyki są równie ważne jak konkretne technologie. Przynajmniej na rozmowach kwalifikacyjnych, bo później to już różnie bywa.

edytowany 1x, ostatnio: somekind
0

Okej czyli składając to w całość w najbliższych miesiącach przyjmę następujący plan :

  1. Poprawię tą aplikacje żeby to miało ręce i nogi, kod żeby był bardziej elegancki i poprawię obsługę wyjątków
  2. Dokończę czytać obecne książki czyli http://helion.pl/ksiazki/jezyk-c-2010-i-platforma-net-4-troelsen-andrew,a_0062.htm i Essential C# 6.0
  3. Po tych książkach przystąpię do której pozycji opisującej MVC, i Clean Code.(Mam nadzieje że do wakacji przeczytam te 4 książki)
  4. W między czasie będę coś pisał no i w wakacje postaram się każdego dnia spędzać parę godzin na pisaniu i angielskim po czym we wrześniu poszukam sobie jakieś stażu ;)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)