Jak dostac pierwsza prace jako junior iOS

Jak dostac pierwsza prace jako junior iOS
J9
  • Rejestracja:około 8 lat
  • Ostatnio:2 miesiące
  • Postów:35
0

Jak pewnie widać, pytanie jest niby trywialne ale nie do końca. Od ponad roku próbuje się dostać gdzieś na juniora i jest słabo. Jestem z Wro ale probówałem chyba wszędzie.
Wiem, że jeszcze sporo nie umiem i za każdym razem czegoś mi brakuje ale z tego co porównuje po innych technologiach to wejście jest dużo trudniejsze. Teraz co prawda macbook mi sie posypał i mam chwilowa przerwę ale stawiam VM i znów wracam do nauki.

Chciałbym was podpytac o kilka punktów

1.) Z rozmowy z wrzesnie w tamtym roku mialem do wykonania ToDo App - apka w całości wykonana ale rzekomo Save oraz Cancel nie były rozmieszczone zgodnie ze standardami Apple Interface Guideline. Nie za bardzo wiem o co z tym chodzi. Czy przyciski powinny mieć określone wymiary/ kolory?

2.) Za każdym razem dostało mi się za clean code oraz za MVC lub MVVM, którym rzekomo brakuje sporo do tego, żeby mówić o takiej architekturze
Ma ktoś może jakiś materiał/tutorial jak powinien jeden lub drugi wzorzec wyglądać? Głównie uczyłem się z tutorialów. Starałem się to jakoś ulepszać ciągle. Jeśli tworze ViewController to protokoły wrzucam w extension w innym pliku jak np delegate czy data source dla przykladu. Pod viewdidload wrzucam tylko funkcje zbiorcze tak jak np "func setupUI" czy cos tego typu. Wszystko poparte komentarzami itd wiec nie bardzo rozumiem co oznacza dla ludzi sprawdzajacych "clean code"

3.) SOLID - nigdzie nie widzialem zeby bylo to poparte jakimis zrozumialymi przykladami, jesli zle szukam to mnie poprawcie, dopiero zacząlem czytac Clean Code, wiec licze, ze moze to mnie troche podciagnie.

4.) Nazewnictwo - na jednej rozmów miałem zwróconą uwagę na nazewnictwo. Nie wiadomo do jakiego obiektu się odnosi. Ciężko mi się w tym połapać bo co rusz znajduje sprzeczne lub po prostu uczę się/uczyłem z błędnych źródeł.

Dzięki z góry jeśli ktokolwiek coś poradzi. Za miesiąc dwa próbuje się gdzieś odezwać do krk lub gdańska bo we wro chyba będzie ciężko coś ugrać. Na razie daje sobie chwile czasu na przypomnienie wszystkiego.

edytowany 1x, ostatnio: jkb91
lgtk
  • Rejestracja:ponad 14 lat
  • Ostatnio:5 dni
3

Może wrzuć przykład kodu na gh i udostępnij tu linka. Ktoś może Ci objaśni w czym problem.

MD
  • Rejestracja:około 5 lat
  • Ostatnio:około 3 lata
  • Postów:25
2

Ciężko się odnieść bez konkretnych przykładów ale

  1. Próbowałeś szukać odpowiedzi na https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/ ?
  2. Na Githubie masz pełno przykładów - https://github.com/search?q=swift+mvvm
    Z drugiej strony aplikujesz na juniora więc ciężko żebyś miał duże doświadczenie z architekturami. Z drugiej strony jeśli dostajesz takie uwagi to zapytaj rozmówcy co by tutaj poprawił, co jest do ulepszenia. Zawsze możesz się czegoś nauczyć.
  3. Szukaj różnych przykładów, które pomogą Ci to zrozumieć. Nie ograniczaj się do Swifta, popatrz na przykłady z innych języków (bo sam nie język nie jest tutaj istotny).
  4. Możesz podać przykład takiej nazwy? No jeśli nie wiadomo do czego się ta nazwa odnosi no to faktycznie może być zła nazwa.

edytowany 1x, ostatnio: MichalDev
J9
Jeszcze takie dodatkowe pytanie. Jak wygląda teraz rynek na mobile? Do przodu czy do tylu? W jakim kierunku idzie? Za kilka miesiecy 29 lat i koncze i troche sie martwie bo juz dlugo brodze, ze tak powiem.
J9
  • Rejestracja:około 8 lat
  • Ostatnio:2 miesiące
  • Postów:35
0

https://github.com/jkb91jkb91/NBP

Apka pobierajaca kursy walut.

Podrzuciłem ostatnią apke, którą robiłem jakiś czas temu. Tutaj dostalem troche uwag, szczegolnie jesli chodzi o clean code i ze MVC nie jest takie jak powinno być.

Jak by ktos z was mial chwile przejrzec czy rzeczywiscie jest tak zle ze nawet na juniora sie nie nadaje to fajnie by bylo sie dowiedziec gdzie robie bledy przynajmniej te razace.

Dziekuje wam serdecznie za zainteresowanie tematem.

edytowany 2x, ostatnio: jkb91
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:19 minut
  • Postów:6627
1

Tak sobie rzuciłem okiem...

Kopiuj
cell.AverageLabel.text = String(((row.ask + row.bid)/2).roundToPlace(places: 4))

Clean code raczej takich kombosów nie pochwala. Napisz odpowiednią metodę liczącą średnią dla odpowiednio nazwanych argumentów.


Kopiuj
func convertDateToString(date: Date) {
        
        if buttonSelected == ButtonValues.from {
            
            if date > toDate {
                dateFromPicker = DateFunc.toString(date: toDate)
                fromDate = toDate
            } else {
                dateFromPicker = DateFunc.toString(date: date)
                fromDate = date
            }
        } else {
            
            if date > fromDate {
                dateFromPicker = DateFunc.toString(date: date)
                toDate = date
            } else {
                dateFromPicker = DateFunc.toString(date: fromDate)
                toDate = fromDate
            }
        }
    }

Drabinka ifów, nazwa funkcji nie mówi za wiele. Funkcja mogłaby zwracać jakąś wartość.


Kopiuj
delegate?.sendDate(pickerDate: dateFromPicker, buttonSelected: buttonSelected)

Ja takie długie linijki lubię rozbijać na linijkę dla każdego argumentu:

Kopiuj
delegate?.sendDate(
    pickerDate: dateFromPicker,
    buttonSelected: buttonSelected)

Nazwy klas mogłyby coś mówić. "MainScreen", "SecondScreen", "PopUpScreen" brzmią jak "Untitled1", "Untitled2", "Untitled3".


🕹️⌨️🖥️🖱️🎮
edytowany 1x, ostatnio: Spine
J9
Pytanie co do drabinki ifów. Faktycznie tam return powinien być. Co do tej drabinki ifów to jak byś to rozbił w inny sposób? Czy takie ifowanie również razi po oczach?
Spine
Staraj się utrzymywać jeden poziom ifów, a zagnieżdżone wsadzić do innej, odpowiednio nazwanej metody. Tak samo robi się z pętlami. Samokomentujący się kod ;)
J9
Dziekuje, fajna uwaga, zawsze pojde do przodu cos bo do tej pory tak robilem niestety. Mam pytanie o DateFormatter jeszcze, gdzie metoda za niego odpowiedzialna powinna sie znalezc? W osobnej klasie pod warstwa model czy w ViewControllerze jako metoda? W MVVM, przewaznie taka metoda jest w ViewModel ale w MVC nie wiem za bardzo. W ogole DateFormatter to warstwa "Model"?
J9
  • Rejestracja:około 8 lat
  • Ostatnio:2 miesiące
  • Postów:35
0

Zastanawia mnie jeszcze jedna rzecz odnosnie clean architecture.
Jesli korzystamy np z CoreData, to czy użycie Singletona w takim przypadku bedzie lamaniem no nie wiem CLEAN CODE czy SOLID?? czy bedzie ok??.

Powiedzmy mam 2 ekrany VC, na pierwszym robie fetch z CoreData, a na drugim robie Save. Czy wstrzykniecie obiektu CoreData przy inicjalizacji pierwszego VC byloby moze lepsze? Analogicznie, jesli przechodze do drugiego ekranu to tam powinienem wstrzykiwac obiekt CoreData utworzony juz wczesniej przy inicjalizacji pierwszego VC czy utworzyc calkowicie nowy obiekt(zakladam ze wstrzykuje istniejacy juz obiekt)?

To samo do korzystania z API i GET REQUEST, czy Singleton sie sprawdzi czy tez uzyc Dependency Injection. Na wielu tutorialach uzywali typowego singletona do samej klasy Networking(get request) oraz kolejnej klasy Response która dekodowała JSONa. Następnie w ViewControlerze wywolywalem metode przez Singleton aby pobrac dane i zapopulowac powiedzmy tabele. Zastanawiam sie czy to tez nie jest zla praktyka kodowania.

Generalnie planuje nowy watek zalozyc na temat czystej architekury zeby troche podpytac bo chyba na tym troche przespalem i zaluje ze sie nie pytalem wczesniej. Wstyd sie przyznac ale kilka odpowiedzi dodalem na stacku, pozniej odjeli mi punktow i przez jakis czas nie moglem nic dodawac, wiec sobie darowalem tamto miejsce.

edytowany 1x, ostatnio: jkb91
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)