Szkoła Androida

Szkoła Androida

Transkrypcja

Powrót do odcinka

00:00:00: Music.

00:00:07: Witaj w Pokażcie szkoła Androida wraz z moimi gośćmi rozmawiam o tym jak budować aplikacje mobilne Pamiętając o architekturze bezpieczeństwa.

00:00:16: Nazywam się Sylwester Madej od 10 lat tworzy aplikacje oraz prowadzę szkolenia gdzie uczą programistu Jak robić to.

00:00:23: Dzisiaj moim gościem jest Paweł Gajda w którym porozmawiam oko.

00:00:28: Nie będzie to jednak rozmowa o tym czy warto przesiąść się z Javy na Kotlina albo dlaczego Extension function.

00:00:35: Paweł lubi zaglądać w zakamarki kompilatora testować różne granicę możliwości języka dla.

00:00:42: Postanowiliśmy porozmawiać o ukrytych funkcjach języka i akty wzorca które spotykamy w ko,

00:00:48: także będzie taki temat trochę bardziej zaawansowany i trochę inne podejście do Kotlin,

00:00:54: pewnie większość rzeczy które spotkacie w internecie Cześć Paweł kupiłem Czy mógłbyś się w takich trzech zdaniach przedstawić nasze są.

00:01:03: Co jest co jest Dzięki za zaproszenie do pokazu Sylwester Obecnie pracuję jako Mentor i segregatory deweloper

00:01:13: z Androidem jestem związany od 2010 roku podobnie jak ty Wyszło 10 lat a Kotlin o którym dzisiaj rozmawiamy z językiem programowania około 6 lat

00:01:29: zdecydowałem się porzucić trawę zrozumiała tak wiesz w Androidzie pojawiało się wtedy też inne języki i tak jak skala Czy Cleo.

00:01:41: Wiesz co to nie był jeszcze na pewno tutaj Daleko mu było domyć streamu więc za Więc można powiedzieć że.

00:01:50: Studia krzyż podejmował decyzję opinie to była taka dobra inwestycja patrząc to co teraz się dzieje Tak Google zgłaszający godzinę

00:02:00: język pierwszej pierwszego wyboru.

00:02:09: Dobre czasy na Kotlina okej wspominałeś o różnych językach i ja tak pamiętam że kiedyś chłopaki z elpassion Opowiadali że że robili trochę w grubym jak języku na Androida

00:02:22: miałeś oka.

00:02:24: Już nie ma Ja czasem elpassion ale słyszałem historię nogi jako język dynamicznie typowany trochę to sprawdzi się w tej roli.

00:02:39: Co prawda miał swoje jakby inne tutaj inne zalety zwłaszcza wchodzi okres,

00:02:45: do testowania ale no no jak kochanie tylko się pojawił to są jakby przegonił drugiego zwłaszcza że tak gładziowanie 6% długo około 16 na Android

00:03:00: tak też też przez mnie czas jakby nie nadążał za zamówienie wersja,

00:03:07: jeśli chodzi o bajką No i nadal nie nadąża nawet jeszcze bardziej OK,

00:03:17: ustaliliśmy że Kotlin zadomowił się w projektach androidowych na dobre i pewnie oddajta klas Extension function obsłudze nuli to już większość ludzi słyszała i teraz jak człowiek.

00:03:30: Dużo siedzi w tym Kotlinie i dużo kombinuje.

00:03:33: Czy są jakieś rzeczy o których chciałbyś opowiedzieć jakiś takich feature a które twoim zdaniem są przez większość programistów przeoczone a tak naprawdę mogą warto je mieć w Arsenale po to żeby lepszy

00:03:46: tworzyć bardziej czytelny czy bardziej zwięzły

00:03:50: tak dałem ci że wiele wiele takich cech języka wiele funkcjonalności które których którym się nie mają okazji odkryć dopóki nie puszczają

00:04:03: nie natknąć na określonego blockota no dzisiaj tak tak pokrótce No to teraz wymienia

00:04:12: Chciałbym porozmawiać na przykład robotnikach inline o kontraktach o trening komas czy czy.

00:04:21: Pisanie w Kotlinie skryptów weselach może też o normalizacji.

00:04:31: To są takie tematy które fajnie fajnie było mówić okej

00:04:39: faktycznie o niektórych z tych rzeczach muszę przyznać że Słyszałem po raz pierwszy kiedy mi Faktycznie podesłałem się listę proponowanych tematów i na przykład ten function na mój sation który zostawimy sobie na koniu która

00:04:53: w innych językach o tym słyszałam natomiast nie słyszałem że w Kotlinie ludzie korzystają z tego dlatego to sobie zostawimy na deser Może zacznijmy od modyfikatorów inline bo faktycznie.

00:05:06: Pewnie część słyszała przynajmniej na in functions ale może może tak jakby rozwiniesz ten

00:05:11: tak modyfikator inline na czas to możemy spotkać w kodzie zwłaszcza bibliotek które używamy

00:05:18: instaluję kompilator żeby w miejscu wywołania metody,

00:05:22: zamiast jej wywoływania wstawił i podczas kompilacji

00:05:28: jest to jest to taka taki fajny modyfikator który przydaje się Android developer.

00:05:33: Deklarując funkcję jako inline nie przyczyniamy się do rozliczenia

00:05:40: liczby w kodzie bajkowym podczas kompilacji kurde bo nie wiem czy spotkałeś się tak z takim problemem że miałaś błąd kompilacji bo nagle Natural,

00:05:52: lekcje jakiekolwiek więcej bibliotek zarzuci to zawsze tak naprawdę Multi lekcje spod.

00:05:58: No dobra ale okej mówisz że to rozwija tak naprawdę i wstawia kod funkcji w konkretnych miejscach ale to też oznacza że będzie rosół rósł wielkość naszego kodu tak ponieważ musimy zduplikować razy ten kod bajtowy.

00:06:12: Tak dlatego należy używać tego modyfikatora z rozwagą tylko w przypadku funkcji gdzie jest ten system z czyli tam gdzie.

00:06:27: Faktycznie ten a metoda którą planujemy wprowadza jakieś.

00:06:34: Skoda z większą czystość kodu możemy wydzielić bardziej deskryptywny fragment który jest często używany bo trzeba pamiętać o tym.

00:06:45: To trochę jest zaśmieca ten bajkos może przyczyniać się do zwiększenia jakby liczby linii utrudnia zredagowania jego

00:06:54: na pewne kompromisy Tutaj jedna rzecz o której warto wydaje mi się wspomnieć to przypadku

00:07:01: inaczej patrzę z takim zastosowaniem które jest często wymusza tak jak był życie online a to jest to jeżeli chcemy operować stworzyć jakąś funkcję która generuje

00:07:12: operuje na typach Czyli jeżeli chcemy mieć taką funkcję która jest parametryzowana typem którego nie zna

00:07:18: i na przykład chcemy użyć wewnątrz klasę obiekt klasy tego typu to wtedy reichweite jak najbardziej można użyć czegoś takiego reichweite czyli taki właśnie słowo kluczowe które działa wyłącznie Jeżeli mamy

00:07:32: także to jest wydaje mi się też jakiś sposób na to że

00:07:35: żeby stosować jakiś powód na to żeby stosować to dobra ale poza wspominałeś mi wcześniej poza tym że że można używać tego jako functions to też o innych rzeczach które mogą być inne

00:07:48: na

00:07:50: W Kotlinie mamy też inne symbole takie jak kropelki z trzeciej klasy no i tutaj również możemy zarówno na procesowych i dla klas stosować ten modyfikator inline

00:08:02: w przypadku properties to no to oczywiście ten modyfikator będzie uwzględniany przy getrach i serwerach czy akcesor.

00:08:08: Warunek jest tylko taki że prof,

00:08:12: nie może mieć do tej chwili czyli tam nie może się pojawić z tobą koszulek więc pa i nie może być takie początkowe inicjalizacji A jeśli chodzi o klasy No to te trasa,

00:08:26: trochę podobnie do Type aliasów które się pojawiały już wcześniej tutaj wprowadzały dużą czy coś w kodzie Zwłaszcza gdy mieliśmy dużo typów funkcji.

00:08:38: Ile jest klasy Jakby przyszły żeby adresować trochę inne inne inny problem przy.

00:08:46: Zwłaszcza przetwarzanie danych gdzie stworzonych typów bardzo dużo ponieważ innej klasy się tym że mają mogą iść tylko jedno Property to Property musi być w konstruktorze inscenizowana.

00:09:03: Jako klasy mogą też implementować jakieś interfejsy nie mogą rozszerzyć innych klas ale mogą implementować interfejsy więc jest to nowość jeśli chodzi o czasy to tyle szło na 13,

00:09:18: jest jeszcze eksperymentalne chyba nawet jako Alfa ale jest to mega ciekawy nie wypić.

00:09:26: Wydaje mi się że to trochę przypomina typy boksowanie w javie

00:09:35: czyli taki gdzie mieliśmy jakieś prymitywy i mieliśmy typy które opakowaniowy te typy po to tylko żeby móc z nich korzystać jako z klas tutaj chyba to jest to jest podobna funkcjonalność plus do tego można temu kompilator może rozróżniać

00:09:49: te typy bo ta Ile jest tak naprawdę dla kompilatora jest nadal jest tym samym typem tylko inaczej nazwanym a tutaj możemy już rozróżniać Jeżeli mamy

00:09:58: bulina jakiegoś bulina o pakowanego w innej klasy to to jest inny typ przynajmniej z poziomu komputera

00:10:06: okej bardzo bardzo fajna rzeczy i ja też zdarzyło mi się jeszcze używać zwłaszcza w połączeniu na przykład z rumem gdzie gdzie.

00:10:16: Typy zwracane Do jakich mapowań się przydają czy coś jeszcze chcesz dodać do inline.

00:10:23: Nie tak jak powiedziałaś że dostajesz co są jakby idealnym idealnym przykładem,

00:10:30: więc tak starzej danych tutaj może mnie wreszcie zostawić.

00:10:39: Dobra to co jeszcze znowu świeży.

00:10:42: Dalej mamy kontrakty no i tutaj też coś co jako Programiści często ze sobą ustalamy tak między między,

00:10:52: to formami i tak między między zakrętem między frontendem z aplikacją mobilną o jakimś API zewnętrznym i zazwyczaj.

00:11:03: Tak conntrack oznacza że że że na coś się zgadzam.

00:11:07: Piszemy jakieś testy integracyjne I rozwaliłem rzeczy jest to spełnione i kontrakty pojawiły się także w Kotlinie w język.

00:11:17: Monia Myślę że możemy ten kontrakt również sobie ustalić z kompilatorem kontrakty umożliwiają nam Kotlinie deskryptywny opis.

00:11:28: Zachowania funkcji dzięki czemu kompilator jest bardziej Smart jest bardziej bardziej intuicyjny więc.

00:11:38: Póki co możemy mam jakby dwie możliwości zdefiniowania z kontraktów to jakby 2 takie przypadki użycia

00:11:46: 1 to jest ustalenie relacji pomiędzy wynik

00:11:50: wywołania funkcji No bo kontrakty dotyczą funkcji pomiędzy rynkiem wywołanie funkcji a argumentami przekazanymi do tej funkcji zeszłego się pisze jako idealny Gdańska

00:12:05: A czy Jeśli na przykład warunek obsada.

00:12:09: Zostanie wstawiony to możliwa będzie automatyczne rzutowanie obiektu Dzięki trzymał Instalujemy kompilatora że w tym miejscu zachodzi jakaś.

00:12:19: Już pewność że obiekt nie jest numerem Agorze że jest to im a nie kloc.

00:12:28: Także także Niemcy Czy miałeś jaja często miałem do czynienia z swoim koncie zanim pojawi się kontrakty że dodatkowo Musiałem coś rzutować bo byłem że to już jest taki.

00:12:42: A ale kompilator No nie musisz go domyślić Tak był jak siłownik był był dobra tutaj drugi taki use Case z kontraktami jest taki że możemy pani kompilator że dany w.

00:12:57: Koty będzie wywołane tylko raz raz i tylko raz.

00:13:02: Umożliwi późniejszą inscenizację nie montowanych obiektów zadeklarowanych ekobal a nie wal wtedy u Krystyny.

00:13:12: Wybacz kontra tylko z Play wskazujące i argument exactly one i oczywiście Trzeba by zobaczyć kot,

00:13:22: no no jest to tak intuicyjny sposób rozmowy z kompilatorem jak ustalenia kontraktu.

00:13:31: No i co warto tutaj podkreślić kontrakty z są już utworzone dla wielu funkcji wchodzących w skład standardowej biblioteki kochina jest możemy trochę inspiracji Jak można ich wykorzystywać.

00:13:46: A od Kotlina 13 mamy możliwość także deklarowania własnych kontraktów dla własnej płci.

00:13:54: Is oczywiście funkcja eksperymentalna podobnie jak z innej klasy więc więc będzie.

00:14:00: Warning i lub wymaga Tomek był ustawienia parametrów na kompie.

00:14:11: Okej Wydaje mi się że to w 14 chyba już weszłem normalnie jako stabilna te kontrakty natomiast to do sprawdzenia

00:14:20: jedna uwaga to wspominasz o tym że warto było zobaczyć kot Postaramy się w notatkach do tego odcinka wrzucić linki do źródeł Gdzie można sobie obejrzeć Faktycznie jakiś opisujący to czy mówimy tak żeby to było jaśniejsze bo niestety Ciężko

00:14:37: w ramach podcastu rozmawiać o takich tematach bardzo zaawansowanych w Kotlinie które są związane wtedy składają.

00:14:46: Dobrze jeszcze wspominałeś o Training Thomas i to jest rzecz która weszła w 14 i to jest rzecz której w sumie mała ale chyba chyba całkiem przydatna z perspektywy.

00:14:58: Mała ale bardzo przydatna zwłaszcza jak pracujemy przy systemach kontroli wersji gdzie zmienia się kod gdzie Dodajemy nowe argumenty do funkcji do klasy No bo to jest Gdzie pojawiły się trening o was tylko masz czyli

00:15:13: przecinki i kończące ten nowy feature umożliwia na postawienie przecinka na końcu listy argumentów funkcji na końcu

00:15:23: start metrów konstruktora i przeczytam gdzie ty chcesz wcześniej tych przecinków nie można było stawiać na przykład wewnątrz dla

00:15:31: gramy są mniejsze gify bo jeżeli będziemy mieli już trening komas za nasze zawsze za naszym ostatni argument

00:15:39: dodając nowy argument po prostu dla mamy jedną linijkę a nie dwie modyfikując tą choinkę w której nie było przez.

00:15:49: To jest zwłaszcza przydatna jak ktoś się w kodzie na przykład ma jakąś listę elementów i musi za mnie.

00:15:55: Te elementy miejscami i one są w różnych linijkach na przykład powiedzmy n u mamy i chcemy zmienić kolejności ten ostatni element musielibyśmy zawsze gdzieś go przekleić dodać przecinek w innym miejscu usunąć przed A tak po prostu robimy tylko o zmianę.

00:16:09: Rzeczy które mała jest ale w sumie mała cieszy bo to na przykład w pythonie i w tego typu językach już od dawna występuje,

00:16:16: porozmawialiśmy to ja takich w filtrach A taka jedna rzecz która której ja na przykład usłyszałem całkiem niedawno że da się używać Kotlina jako tako języka skryptowego coś w stylu basha

00:16:30: coś o tym mowa.

00:16:32: Tak Kochin może być wykorzystywany jako język skryptowy który cechuje się tym że.

00:16:40: Kot jest wykonywany od góry do dołu tak jak w sklepach paszowych Różnica jest taka że ten kot wtedy jest zapisujemy w którym a rozszerzenie KTS.

00:16:55: Kopczyński.

00:16:58: No i okazuje się że może być bardzo szerokie użycie tylko języka skryptowego większość pewnie z was zna z programistów Androida Korzystając z systemu do budowania grade

00:17:12: miał już okazję korzystania z

00:17:16: grillo wypisanych w kraju które kończą się tą KTS

00:17:22: ale tutaj jakby możliwości wykorzystania tego języka skryptowego są znacznie większe,

00:17:29: nie wiem jak jak Sylwester mi się zdarza.

00:17:33: Zdarzało podpisanie w wielu hitów basowe które automatyzujące różne procesy tak jak rysowanie projektu Czy właśnie,

00:17:42: lista komend tak Gitara która gniecie które sterują mi git-flow w projekcie.

00:17:52: Basiu nie mogliśmy korzystać jakby nie mieliśmy tego statycznie otynkowanego nie mieliśmy kolorowania składni jeśli nie zastosowaliśmy,

00:18:01: odpowiednik pluginów do ile no i tutaj okazuje się że kokin jest takim językiem Only one language,

00:18:09: Rule them All tak czy że można można można mieć cały projekt.

00:18:17: Wszystko dookoła proces opisany tak skryptami

00:18:23: film języku okej tutaj pytanie jak to wygląda jeśli chodzi o odpalanie takiego skryptu bo jak rozumiem muszę mieć gdzieś jakiś interpreter zainstalowany w.

00:18:34: Linux Mac osieczy w czymkolwiek.

00:18:38: Tak tak samo są dwa rozwiązania jest oczywiście podejście oficjalne jest oficjalna oficjalna interpreter in mein KTS który jest rozwijany przez zebranie suche i kable

00:18:51: tyle że bardziej większą popularność zdobył nieoficjalna

00:18:58: Open Source Chris nie słyszałem o tym jest to coś co się przewinęło na Na tym kompie już kilka lat.

00:19:08: No i ten kask Lights który nieoficjalny ma trochę trochę więcej funkcjonalności między innymi obsługuje kasowanie obiektów ci skrypty nie są rekombinowane Jeśli zostały już,

00:19:23: jeśli nie zostały wykryte żadne zmiany co jest.

00:19:26: Jeśli chodzi o skrypty przy których zależy nam na szybkości wykonania tak nie chcemy żeby proces który nam przynosi pliki

00:19:34: żeby żeby żeby jego zbudowanie wykonanie trwało kilka minut.

00:19:42: Więc kaski generalnie wstaję gdy przoduje do takich zastosowań.

00:19:49: Dodatkowo ma edycję skrętów idę tworzy szybki but strat minimalistyczny projekt grillowy dzięki któremu uzyskujemy kolorowanie składni.

00:20:00: Okej Świetna rzecz na pewno do tego zajrzę

00:20:03: teraz tak jeszcze jedna rzecz zanim przejdziemy do antypater znów o której chciałeś Chciałeś wspomnieć i która była dla mnie trochę odkryciem czyli właśnie function na mój Opowiedz o tym bo to jest bardzo ciekawe.

00:20:18: Okej Memories function No to jest to taka funkcja która może przechowywać wartość z poprzednich obliczeń Czyli możemy się jakiś taki Cash jeżeli.

00:20:33: Możliwości prezentacji to takiej analizowanej funkcji może to być.

00:20:40: Funkcja która zabierze lambdę i.

00:20:46: Jak wywołana to nam tylko raz jak będę w jeden sposób mojej.

00:20:52: I przy każdym kolejnym byłam tej funkcji zwrócić na już tą wartość raz raz oblicz.

00:21:00: Sposób werbalizacji to jest wykorzystanie chcę szympans.

00:21:05: Komentując funkcję memorise która jakby w środku zawiera też Zbyszek w postaci budowlanej mapy.

00:21:14: Jest jest wykorzystana metoda,

00:21:17: getor płuc która zwraca lub tworzy dobrą wartość w tej właśnie,

00:21:25: dla dla nowych argumentów metodę dziecko będzie to jeszcze raz obliczane nowa obliczany a jeżeli wolny funkcje za komentarz.

00:21:35: W którym już wybraliśmy wcześniej tą funkcję cała Co to jest to mamy już gotowe rezultat,

00:21:43: to się tutaj oczywiście sprawdza bardzo przy przetwarzaniu danych połączone to z innej klasami to to można bardzo Przyspiesz.

00:21:54: Jakieś przetwarzanie obrazów czy jakieś takie procesy gdzie gdzie jest zapotrzebowanie na ten Performance gdzie chcemy tworzyć dużo

00:22:03: w Androidzie możemy sobie stworzyć proste dependency injection oparte na takich funkcjach symbolizowane.

00:22:12: A wtedy Nieważne nie musimy korzystać z zegarem fiskalną.

00:22:17: Możemy stworzyć sobie funkcję mymoń zwracam która będzie nam szykować instancje z Luton.

00:22:24: Lub u was będzie konstruktor.

00:22:32: Obieg Ostrówka klasy z argumentami które już wcześniej stał gdzieś wstrzyknięte.

00:22:43: To świetne świetne w ogóle sposób tak naprawdę można własne,

00:22:47: powiedzmy minikoioi na napisać sobie Korzystając z tego dobra tak jak wspominałem wrzucimy linki do do jakiejś artykułów opisujących to żeby można było sobie

00:22:59: przeanalizować na pewno warto takie hasła znać żeby

00:23:03: też móc rozwijać swoje umiejętności poza te rzeczy które są standardowo polecane używane i teraz wspomnieliśmy o tym czego warto użyć,

00:23:13: i chciałbym teraz porozmawiać od fanty paterna krwiożercza które jako jako Mentor widzisz w kodzie produkcyjnym i wtedy dajesz Po łapach tak Czyli czego twoi warto Unii.

00:23:27: Antypater znów wzorców jest jest bardzo dużo i ona Wydaje mi się że się wynoszą w zależności od tego jak nie jak,

00:23:35: Jaką mamy przeszłość jakie tylko organiści bo to jakby zwykle bierze się z tego że Programiści.

00:23:42: A którzy pisali wiele lat Cezary najlepsza scena Kotlina i Próbują dalej pisać.

00:23:48: Więc mamy tutaj problem między innymi notacji Węgierskiej która jest oczywiście stosowana,

00:23:56: w Kotlinie przez Extra deweloperów z tej Warto zwrócić sobie uwagę po co tam notacja Węgierska była stworzona tak i to to to że,

00:24:09: problem tego że

00:24:12: że mieliśmy w javie tak obiekty podział Żabiniec gdzie gdzie te kropelki sy składały się z prywatnych pól z Cypru.

00:24:25: Enkapsulacja w Kotlinie mamy to wszystko.

00:24:32: Te trzy elementy filtr serger jest jednym jest całością.

00:24:41: Więc.

00:24:45: Ten przedrostek n od member i się dobrze pamiętam.

00:24:52: Który na mówi że to jest pole pole klasy.

00:24:56: Jest zbędny ponieważ na zewnątrz

00:25:02: ponieważ nie będzie konfliktu nasz tak Czyli nie będziemy musieli wymyślać nowej nazwy dla pola okej dupa teraz tutaj jedno pytanie bo bo to wspomniałeś Natomiast teraz często że na przykład w przykładach wróblowych mamy jakąś Live date powiedzmy w tej był Live DTI na zewnątrz chcemy wystawiać niemu tej ból i wtedy często stosuje się coś takiego jak znak Ja na początku

00:25:27: Co ty o tym myślisz o tym podejściu.

00:25:32: Uważam że to jest akceptowalne wyjątek dziś będzie o mutowalne lady

00:25:40: i Dawid i tak można się tutaj wspierać czy to była jakby dobra dobra decyzja strony Google że tak to zamordowali.

00:25:51: Można by to pewnie zrobić na.

00:25:54: Jaką stajni piszę tylko ustali ten podkreślnik sam stosuje jeśli chodzi o ograniczenie widoczności Late montowanych na zewnątrz.

00:26:06: Więc Bardziej chodziło mi o takie klasy które można zastępować dajta klasami o.

00:26:16: Typowy na nadużycia wynikająca jakby spisania pogrzebowego.

00:26:24: To jeszcze uważasz jako pisanie pogrzebowe.

00:26:27: Singleton jakbym trochę jest wiele tj znowu on jest 3 do trawy Novotel,

00:26:34: częsty temat jest wiele możliwości tworzenia Single tonów z wykorzystaniem skutecznych metod z wykorzystaniem fizycznych obiektów.

00:26:47: Gdzie mamy prywatny konstruktor jakby i mamy statyczno statyczny symbol który nam zwraca nową instancję,

00:26:59: lub lub instalacje wcześniej utworzono.

00:27:02: To jest takie nadużycie które wynika z tego że że mi znamy z tego słowa kluczowego Object które.

00:27:11: Występuje Run i znacznie upraszcza tworzenie silikonów korki.

00:27:18: A pod spodem de facto robi to samo ale ale tak naprawdę nie nie ma sensu teraz pisać tego explicite skoro może może to zostać wygenerowany przez.

00:27:31: Tak jest takie red-devil tak Dożynkowa na nowo okej dobra no coś jeszcze antypater.

00:27:41: Tak w Kotlinie mamy nul Safety i Bartek bez trudu Safety korzysta z Czyli chodzi tutaj o,

00:27:51: korzystanie z tego operatora Double Extension Mark podwójnego przecinka w sytuacjach gdy jest możliwe stoi faksu z możliwości Gdy możemy

00:28:03: tak mieć bezpieczne bezpieczny dostęp do symboli które mogą być.

00:28:12: To to to też często często jest spotykany w kozie ostatnio.

00:28:23: Tutaj są też kwestie sporne Czy powinno się w wyjątkowych przypadkach stosować ten operator czy 31.

00:28:32: Trzech nul require not-null metody które w sposób bardziej deskryptywny gwarantują nam że że nie mamy Lula i jeszcze odpowiedni wyjąć.

00:28:43: Także też 2

00:28:45: ja w tej chwili Zgadzam się z tobą że warto właśnie poznać bo to też nie każdy to zna czyli ten na przykład required no to jest takie taka funkcja która de facto pozwala opakować jakieś wyrażenie i to jest widać wtedy

00:29:00: jawnie że to będzie zakładamy że to nie jest problem i też warto pamiętać o tym że te dwa wykrzykniki nie na darmo są dwoma wykrzyknikami tak czyli to jest trochę powiedzenie

00:29:13: uwaga uwaga tutaj coś się będzie potencjalnie złego działo Tak więc więc faktycznie jeżeli możemy to spróbujmy się tego pozbyć żeby ten wykrzyknik wykrzyknik

00:29:23: W skrajnych przypadkach mówił nam że w tym miejscu coś potencjalnie musi się dziwnego dziać więc więc jeżeli już faktycznie zastosujemy z taką świadomością no to towar

00:29:35: żeby to zostało tylko dla wyjątkowych wyjątkowych sytuacjach

00:29:39: dobrze a co myślisz o o w ogóle używaniu na przykład la.

00:29:49: Bardziej parametrach w landach.

00:29:53: Parametry lambda ach to tutaj jest kolejny problem taki że.

00:30:00: Często robią się one nieczytelne tak bo nadużywamy tych.

00:30:07: Sokolnia zapominamy jawnie klarować.

00:30:11: Nas w tych parametrów landach więc dużo ID i tak dalej zagnieżdża.

00:30:20: No jest to takie trochę trochę leniwe lenistwo z naszej strony.

00:30:29: No i mogą się potencjalnie nazwy zasłaniać w momencie kiedy mamy lambdy w lambdzie w lamp.

00:30:35: Dokładnie mówiąc właśnie o landach warto też wspomnieć o.

00:30:42: Operator można nazwać operatorami albo Extension Pack Extension function z takim jak magfilter które są,

00:30:52: operacjami na na na listach na kolekcjach i zwracają na nowe.

00:31:00: Nową kolekcję która jest filtrowana lub lub ciasto rapuje.

00:31:10: Brakuje nam elementy listy na której ta metoda jest wywoływana.

00:31:18: I często widzę też wchodziła długie łańcuchy takich metod i tak naprawdę Wynika to często z naszej niż wiadomości.

00:31:27: Że nie wiemy jak wiele tych obiektów tam tworzył pod spodem podczas tych takich czas.

00:31:33: Która które No są charakterystyczne dla Javy tak data reaktywnego programowania.

00:31:40: Tworząc takie długie łańcuchy na na na zwykłych kolekcja.

00:31:45: Często zapominamy o tym ile tam tych obiektów jest stworzony i tutaj,

00:31:52: też Kotlin ciebie taki taką strukturą sequele który który to tym awizuje to

00:32:05: warto warto stosować konwersje.

00:32:10: A to do Sequence przed przed przed takim długim łańcuchu.

00:32:16: Potem możemy możemy wrócić do zwykłej listy do suchej kolekcji i oszczędnego wielu.

00:32:26: Obiektów które zajmują pamięć.

00:32:33: To powiedzmy w takim razie o różnicy pomiędzy na przykład operacji na liścia na sekwencji czym one się czym się różnią te operacje w jaki sposób będą wykonywane.

00:32:43: W przypadku listy każdy taka operacja,

00:32:50: każdy tak jak znasz twarz ma przy filter utworzy nam nową listę.

00:32:54: Więc tych tych tych liczb w pamięci Będzie znacznie więcej przykład konsekwencji te.

00:33:04: Idzie to tak trochę od drugiej strony i tworzona jest.

00:33:14: Tylko jedna kolekcjach na które na której są te wszystkie po pracy wywoływane

00:33:23: Okej czyli w dużym skrócie mamy także w przypadku listy Jeżeli mam najpierw na przykład mapę a potem filtr to zostanie zrobiona mapa

00:33:32: powstanie nam nowa lista zawierająca wy mapowane obiekty potem filtr wytnie te obiekty a jeżeli zrobimy sekwencje to zostaną Najpierw nam zmapowane na k.

00:33:42: Każdy element zostanie zmapowany potem przefiltrowany i dopiero na końcu zostaniemy nową listę takie tych elementów bez konieczności tworzenia tych pośrednich elementów

00:33:54: dobra to to jest to jest rzecz którą sekwencje Na pewno każdy powinien znać bo naprawdę w takich większych filtrowania przy większych operacjach na jakiś kolekcjach to się na pewno przydaje

00:34:07: okej A co w ogóle sądzisz o mutowalność i w Kotlinie czy czy Czy twoim zdaniem warto robić obiekty mu towar,

00:34:18: jak najbardziej mają sens mutowalne lokalne zmienne w ramach bramach męczące ale też jesteś ten podejścia.

00:34:31: Więcej nie mocowanie montowanych jednak obiektów tym tym tym miejsca i defektów Tym mniej takich nieprzewidzianych zł.

00:34:42: Salut naszej aplikacji więc.

00:34:48: Podążanie za takim stawem.

00:34:53: Programowanie trochę bardziej funkcyjnym z funkcjami które są bardziej kur i.

00:35:04: Unikanie defektów jest bardziej podejściem jakby które Zakroczymia podąża.

00:35:13: W przypadku mutowalność warto jeszcze powietrze jednej takiej rzeczy że jak mamy obiekt który jest.

00:35:21: Jak mamy Property bardziej które jest zdeklarowany ekowal też czasem nie mamy stuprocentowej pewności że.

00:35:30: Ta wartość tego obiektu się się zmieni nie zmieni będzie.

00:35:36: Niemutowalne bo tego to był taki pewien Case,

00:35:46: krzyż matematyki określenia trudnych Koło style można mieć gtr-a który nam będzie zwracał za każdym razem na nowo inną wartość i mieć 2gen.

00:35:59: Tutaj też żeby nie iść w stronę z Kali w stronę bardziej w takich języków które mają więcej.

00:36:09: Miglanc jeśli chodzi o.

00:36:15: Okej a dużo wiedzy warto jeszcze raz tutaj wyślę do.

00:36:24: Notatek dotyk odcinka gdzie na pewno można znaleźć przede wszystkim te nowe rzeczy o których warto poczytać,

00:36:31: zrobimy też krótkie podsumowanie tych rzeczy które warto unikać i ja bym tutaj tutaj bym na dzisiaj zawijał w tym momencie tylko jeszcze do ciebie pytanie

00:36:43: Gdzie można cię znaleźć Jeżeli ktoś chciałby się dowiedzieć więcej o Kotlinie nie wiem udzielasz się gdzieś na internet,

00:36:51: najbardziej jestem aktywny na Twitterze to co ja myślę że w notatkach do odcinka możemy to zrobić niż link tam jest.

00:37:01: Dobra Dobra dzięki wielkie za za ten odcinek i do zobaczenia z i usłyszenia w kolejnych odcinkach Mam nadzieję że jeszcze kiedyś będziemy mieli okazję rozmawiać.

00:37:16: Tyle ode mnie to usunę Nie no hej dzięki Fajnie było.

O podcaście

Podcast dla programistów Androida.
Architektura, bezpieczeństwo i testy aplikacji.

przez Sylwester Madej

Subskrybuj

Obserwuj nas