Program Cleaner .NET

ZD
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 7 lat
  • Postów:99
0
no_solution_found napisał(a):

no to ja od siebie mogę dodać takie uwagi:

  • masz za dużo bloków jeden w drugim. Przykład: https://github.com/lukaszpl/Cleaner-.NET/blob/master/Cleaner%20.NET/Cleaner%20.NET/Cleaning.cs#L36 Jak masz już 2 bloki zagnieżdżone, to POWAŻNIE się zastanawiaj nad trzecim. Jak masz 5, to jest pewne, że robisz to źle
  • jest dużo powtarzającego się kodu, np Cleaning::ClearTemporaryFiles oraz ::ClearWindowsErrorReporting są do siebie bardzo podobne
  • funkcje robią za dużo i zapewne stąd ta ilość zagnieżdżeń, ja bym jeszcze bardziej to rozbił, a operacje usuwania plików w folderze wyrzuciłbym do oddzielnej klasy
  • w ogóle klasa Cleaning jest za duża! 200-300 linii z komentarzami to powinien być max

Wybacz, że pytam dopiero teraz ale wczoraj nie miałem już siły nad tym myśleć ;)

  1. Czemu zagnieżdżanie dużej ilości bloków jest błędem ? Tak się po prostu przyjęło, czy pogarsza to wydajność ?
  2. Co do powtarzającego się kodu, cóż starałem się skurczyć kod programu i udało mi się to w jakimś stopniu względem poprzedniej wersji, ale do doskonałości dużo brakuje (zwłaszcza w tejże klasie). Trochę nad tym posiedzę i mam nadzieje, że coś poradzę ;)
  3. (4) Czemu klasy mają być tak małe ? Z powodu estetyki, czy oszczędzania pamięci ?

Pozdrawiam.

edytowany 1x, ostatnio: Zdziwiony
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
2

Zawsze chodzi o czytelność. Programy powinny być przede wszystkim pisane dla ludzi do czytania, a drugorzędnie do uruchamiania przez komputery.


no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 15 godzin
2

nawet nie tylko chodzi o czytelność, ale to też jest bardzo ważny powód, a powodów jest kilka

  • ww. czytelność. Jak się na raz patrzy na małą ilość kodu, to jakoś łatwiej jest w niej znaleźć to czego się szuka
  • metody są mniej skomplikowane za czym idzie fakt, że jak będziesz musiał Ty albo ktoś inny tę metodę zmienić, to łatwiej przyjdzie zrozumienie co ona dokładnie robi
  • mniejsze klasy/metody dużo łatwiej i wydajniej się testuje (mam na myśli Unit Test)
  • w skrajnych przypadkach dochodzi do jakiś kolosów w stylu https://github.com/tcpdf-clone/tcpdf/blob/master/tcpdf.php które czasem online edytor nie jest w stanie wyświetlić :)
  • jak są mniejsze klasy/metody to dużo łatwiej jest zorientować się po samej ich nazwie co DOKŁADNIE ona robi. Np powiedzmy, że mamy metodę cleanUpHistory(), która czyści historię przeglądarek. Widząc sam nagłówek jesteś w stanie powiedzieć jakie przeglądarki czyści? Co się stanie jak czyszczenie jednej z nich zakończy się niepowodzeniem (wyjątkiem). W ten sposób zrobi się tam jedna wielka ifologia z masą try->catch.
  • jak napiszesz na przykład jedną metodę do czyszczenia historii przeglądarki, którą podasz jako parametr, ale po np 5 miesiącach uznasz, że można to zrobić lepiej, to zmianę zanosisz tylko w 1 miejscu, nie 5 :)

Ogólnie rzecz biorąc - ja jak i wiele osób tutaj nie przepuściłoby tego kodu przez code review, bo na dłuższą metę ten kod byłby jednym wielkim uciemiężeniem. Rozdziel tę klasę na jakieś logiczne elementy (nie wiem jak to jest z innymi klasami - nie patrzyłem). Pobaw się trochę polimorfizmem, bo przecież klasa czyszcząca historię FF będzie bardzo podobna do tej, która czyści historię w Chrome czy Opera, co nie? Zastanów się jakie są ich elementy wspólne, aby niepotrzebnie nie powtarzać kodu.

Poczytaj sobie o co chodzi z KISS https://pl.wikipedia.org/wiki/KISS_(regu%C5%82a), DRY https://pl.wikipedia.org/wiki/DRY) oraz SOLID https://pl.wikipedia.org/wiki/Solid_(programowanie_obiektowe).

Na resztę klas nie patrzyłem, bo jestem leń :) a c# znam słabo, więc co do zastosowania języka musi wypowiedzieć się ktoś inny. Ale nie poddawaj się! Dobrze Ci idzie


ZD
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 7 lat
  • Postów:99
0

Dzięki za rady ;)
Postaram się to jeszcze lepiej napisać, jak tylko skończę to odezwę się ;)

PS: Niezły ten kolos napisany w php :E Nieźle zamula na początku przeglądarkę :P

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)