Komentarze do: C#, .NET, OOP… czyli jak programować ładnie i zgrabnie? http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/ Kreatywne IT, Gospodarka, Społeczeństwo Thu, 21 Jul 2016 20:03:35 +0000 hourly 1 https://wordpress.org/?v=4.5.3 Autor: Marek Czuma http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-17 Sun, 17 Jul 2016 11:43:45 +0000 http://marekczuma.pl/?p=110#comment-17 Odnioslem sie, pare razy;-) Nie masz mi nic udowadniac, jesli masz potrzebe podzielenia sie z innymi czytelnikami standardami pisania kodu, to napisz identyczny program napisany wlasnie z zachowaniem tych standardow, opisz czemu powinno sie pisac tak a nie inaczej bo uwazam ze moze to byc mega pozyteczne i nakierowac poczatkujacych programistow na wlasciwa droge, a ja to opublikuje. Jesli to natomiast ma byc pusta krytyka, to polecam zajac sie czyms pozyteczniejszym;-) I jeszcze raz dziekuje za aktywnosc!
P.s.
Na przyszlosc prosilbym podpisywac sie imieniem lub imieniem i nazwiskiem
Pozdrawiam!

]]>
Autor: fdgfdgdfgdf http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-16 Sun, 17 Jul 2016 10:03:24 +0000 http://marekczuma.pl/?p=110#comment-16 Przemilczałeś każdy punkt nie masz racji, nie odniosłeś się merytorycznie do tego co napisałem i idziesz w zaparte że tak jest dobrze i ja mam Ci coś jeszcze udowadniać?
To zrobiłeś z tym to już nawet nie jest kwestia prostoty czy skomplikowania, to jest po prostu głupie. Klasy base nie da sie używać.

Pisałem o id w klasie base, kopiujesz produkt zapisujesz do bazy z ustawiasz mu NOWE id znane tylko klasie base i nikomu innemu id, a jedyną możliwość odnalezienia tego produktu to jest wyszukanie po id, którego nikt nie zna. Gdzie tu jest prostota.

Nie używa sie? a DateTime, Point itp. czym są? w klasie produkt jest tylko ślad hermetyzacji bo wszystko po za nazwą ma public set; get; wiec nawet z godnie z twoją logiką spełnia warunki na strukturę. Poza tym nawet jeśli użyłeś słowa class, to w cale nie zmienia faktu że jest to struktura. Poza kulawym toStringiem klasa produkt nie ma żadnych metod wiec jest tylko opakowaniem na dane, wiec jest strukturą, to że ją kopiujesz też swiadczy że to struktura. Jest o tym tuzin ksiązek i 10 tuzinów filmików na youtube.

]]>
Autor: Marek Czuma http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-15 Sat, 16 Jul 2016 23:30:48 +0000 http://marekczuma.pl/?p=110#comment-15 Tak jak już napisałem raz, powtórzę i drugi. Artykuł ma zapoznać z podstawami C# i .NET, jak to już pisałem nawet w treści – uproszczenia są konieczne i rzeczy które normalnie w projekcie byłyby niedopuszczalne, w tym przypadku nie są problemem. Powiem więcej – przeciwnie, problemem mogłoby się stać „ładne” kodowanie ze względu na większy poziom skomplikowania.
Ale jeśli mam już tłumaczyć konkretnie, to: id produktu jest public. Produkt strukturą? Ciekawe podejście, na szczęście struktur się nie używa, szczególnie nie w C#, a najbardziej szczególnie nie tam gdzie jest choćby ślad hermetyzacji. To czemu stosuję listę już powiedziałem.
Ale powtórzę – chętnie przyjmę lepszą, napisaną hiperpoprawnie wersję tego samego programu i zamieszczę również w celach edukacyjnych. Ten artykuł będzie wprowadzał w podstawy, zaś ten drugi – w standardy. To jak?

]]>
Autor: fdgfdgdfgdf http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-14 Sat, 16 Jul 2016 23:15:06 +0000 http://marekczuma.pl/?p=110#comment-14 *protected

]]>
Autor: fdgfdgdfgdf http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-13 Sat, 16 Jul 2016 23:12:55 +0000 http://marekczuma.pl/?p=110#comment-13 https://msdn.microsoft.com/en-us/library/ms229045(v=vs.110).aspx pisze żeby nie uzywać _ 😉
No to w poprzednim artykule też nie potrzebnie dodałeś słowo produkt.

Wcześniej nie zauważyłem że kopiujesz produkt, w metodzie Add, przecież to jakaś masakra. Produkt nie powinien nieć właściwości id, to co zrobiłeś jest tak absurdalne że trudno o logiczne argumenty. Jakim cudem użytkowanik klasy base jest w stanie odleźć, lub usunąć produkt po ID jak go nie zna bo jest private? ma wypisać sobie w konsoli przepisać na na kartke i wywołać metodę remove? tego id się nawet przewidzieć nie da bo jak ktoś będzie konsekwentnie usuwał ze środka i to wyjdzie ser szwajcarski. To że dictionary i hashset są idealne do sytuacji z unikalnym id(po to je wymyślono) i to ze produkt powinien być strukturą przemilczę.

]]>
Autor: Marek Czuma http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-12 Sat, 16 Jul 2016 18:09:20 +0000 http://marekczuma.pl/?p=110#comment-12 Tak jak podkreślałem, całość jest bardzo uproszczona ; – ) Skierowana dla ludzi, którzy chcą postawić dopiero pierwsze kroki w .NET, dlatego nie ma np mechanizmów nadpisania ToString() (co nie znaczy, że to co napisałeś nie jest sensowne, chociaż stwierdzenie „write ssie” jest mało konkretne:p). Listę stosowałem, bo słownik w tym konkretnym momencie się nie nadaje, to raz. Dwa – to jedna z najpopularniejszych kolekcji i chciałem je nowym osobom zaprezentować (wykorzystywana o niebo częściej niż hashset lub dictionary). Nazwy są żywcem przeniesione z poprzedniego artykułu, ponieważ to zrobienie tego samego w .NET.
Co do „_nazwa” jako nazwa w argumencie metody – nie spotkałem się nigdy z krytyką tego zjawiska, konwencje zwykle tego nie regulują pozostawiając do uregulowania programistom, bardzo łatwo się odróżnia od reszty kodu, jest wygodne. Oficjalna konwencja microsoftowa tego nie reguluje.
Oczywiście dziękuję za komentarz! Jeśli chciałbyś napisać bardziej rozbudowaną, „poprawioną” wersję dla naszych czytelników, to zachęcam, podeślij na maila, a ja przejrzę i zamieszczę – oczywiście z podaniem autora;-)

]]>
Autor: fdgfdgdfgdf http://marekczuma.pl/2016/07/15/c-net-oop-czyli-jak-programowac-ladnie-i-zgrabnie/#comment-11 Sat, 16 Jul 2016 12:30:34 +0000 http://marekczuma.pl/?p=110#comment-11 a co jeśli dwa produkty mają takie, same id? znajdzie pierwszy a co z drugim, czy id może się zmienić, jeśli nazwa się nie zmienia to powinna mięć pole readonly, dlaczego używasz listy zmiast hashset lub dictionary, konwencja mówi że nie stosuje się _ przed nazwą właściwości powinny być pod kontruktorem, słowo product w medotach jest zbedne bo jako parametr podajesz produkt, wiec to oczywiste że do dodajesz produkt( aż brzmi głupio). CalculateProduct jest całkiem mylące, powinno być Coś Ala calculateTotalValue tam gdzie wyszukujesz produkt po id, nazwa powinna konczyć sie na key, id lub at bo tak jest w normalnych kolekcjach. Write ssie powinieneś nadpisać to string

]]>