Nauka dobrych praktyk w samodzielnym, hobbystycznym programowaniu

Nauka dobrych praktyk w samodzielnym, hobbystycznym programowaniu
P7
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 5 lat
  • Postów:27
0

Pytanie jak w temacie - jak przyswoić sobie dobre praktyki i nawyki programistyczne w samodzielnej nauce? Jestem na etapie że poznałem podstawy Pythona (i ostatnio zacząłem rozkminiać C++). Korzystając z SO/4programmers udaje mi się napisać działające (i to zgodnie z oczekiwaniami ;) ) skrypty. Mam radochę że to działa, ale podejrzewam że napisane jest to od d**y strony, a gdyby taki kod zobaczył profesjonalny programista to miałby niezłą bekę. Czyli potrafię coś napisać, ale chciałbym teraz wejść na poziom - napisać to dobrze ;)
Jak doskonaliliście Wasze umiejętności w samodzielnej nauce programowania?

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

Wrzuć tutaj ten kod i pochwal się. Jest tutaj trochę kompetentnych osób, które z miejsca Cię naprowadzą na odpowiedni tok myślenia. Serio, serio.
Zwłaszcza, że dopiero zaczynasz więc będzie najprościej, bo najprawdopodobniej nie robisz kodu dla NASA.

edytowany 1x, ostatnio: grzesiek51114
KA
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 15 godzin
  • Lokalizacja:Warszawa
  • Postów:41
2

Robert C. Martin "Czysty kod"

edytowany 1x, ostatnio: kamillapinski
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:27 minut
  • Lokalizacja:Warszawa
  • Postów:2251
1

Tak jak pisał @grzesiek51114 wrzucaj kod i UWAGA - nie bój się tego, że ktoś zjedzie Twój kod od A do Z. Wiem z doświadczenia że pierwszy code-review może być nieprzyjemny, zwłaszcza gdy robią go ludzie ze sporym doświadczeniem.

edytowany 1x, ostatnio: axelbest
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:3 minuty
  • Postów:8399
8

Pytanie jak w temacie - jak przyswoić sobie dobre praktyki i nawyki programistyczne w samodzielnej nauce?

Pisz większe projekty
Wtedy sam odkryjesz, że choćby pisanie metodą copy-paste jest nieskalowalne, że pisanie magic numbers utrudnia utrzymywanie itp.

Ew. jakbyś sam tego nie odkrył, to przeczytasz to w jakiejś książce. Tylko, że samo czytanie książek nie wystarczy, bo ty musisz rozumieć, o czym dany autor pisze, a do tego trzeba trochę własnych doświadczeń. Więc jednak warto pisać większe projekty (samemu albo w zespole)

Pisz projekty przez dłuższy czas
Pisanie projektu przez dłuższy czas także nauczy cię tego, że wszystko może się spieprzyć i zrozumiesz, dlaczego trzeba robić backupy. A jak będziesz miał kupę folderów z backupami typu moj_projekt_4_pazdziernika_2018, to zrozumiesz dlaczego warto korzystać z Gita.

Pisanie większego projektu przez dłuższy czas także pozwoli ci zrozumieć ideę pisania testów automatycznych (bo one pozwalają wykryć z automatu, czy czegoś nie zje*ałeś, a sprawdzanie tego ręcznie trwało by długo

Pisz projekty z ambitnymi i zmieniającymi się wymaganiami.

Np. dla kapryśnego klienta. Jeśli nie masz klienta, to sam sobie stawiaj wymagania "biznesowe" i je realizuj. Potem kombinuj, zmieniaj w trakcie. Pisząc samemu wyobraź sobie, że oprócz bycia programistą, jesteś jednocześnie swoim własnym klientem/docelowym użytkownikiem (który chce mieć ładny produkt, niezależnie od tego, czy to jest trudne czy łatwe dla programisty).

Bądź leniwy

Lenistwo to zaleta programisty. Np. załóżmy, że zrobiłeś grę w węża. Zrobiłeś planszę, sposób wyświetlania kwadracików, sposób wyświetlania menu, ruch węża itp.

I potem nagle cię najdzie, że chcesz zrobić grę w statki. I teraz tak - albo możesz ją zrobić całkowicie od początku, albo wykorzystać część kodu z poprzedniej gry (np. samą planszę, czy sposób wyświetlania kwadracików).

I teraz tak - jeśli napisałeś brzydko węża, to może się okazać, że nie da się wykorzystać istniejącego kodu do kolejnej gry (bo np. będzie duży coupling modułów, dużo ukrytych założeń, słaba separacja modułów itp.). Więc jesteś w dupie i masz teraz więcej roboty, bo musisz pisać wszystko od nowa.

Natomiast dobrze ukierowane lenistwo będzie cię motywować do tego, żeby pisać taki kod, który łatwo potem można użyć w kolejnych projektach.

Najlepiej cały czas kombinować, jak zrobić, żeby się nie narobić, to wtedy wejdą ci łatwo do głowy zasady DRY, YAGNI czy KISS (swoją drogą czasem bardziej KISS jest użyć copy-paste i złamać zasadę DRY https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction ).


edytowany 3x, ostatnio: LukeJL
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)