Delegacja funkcji – suplement

Na wykopie pod linkiem do wczorajszego wpisu padło pytanie: A jak rozwiązywane są konflikty, gdy np rozszerzasz klasę, która ma tę samą nazwę metody co delegowany interface? Najpierw rzućmy okiem na zachowanie „gołej” Javy: Listing 1. Java, a metody o takiej samej nazwie public class App { public static void main(String[] args) { C c […]

Delegacja funkcji w Kotlinie

Wzorzec delegataW wszyscy znamy i lubimy, choć często mylimy z przekierowaniemW. Często też mieszamy ten wzorzec z dekoratoremW tworząc konstrukcje, gdzie kontroler przekierowuje dane wejściowe, do jakiegoś serwisu, który to serwis jest dekoratorem do jakiejś usługi (takie samo API), którą wywołuje np. wcześniej, dokonując walidacji. Zazwyczaj sama delegacja produkuje nam masę niepotrzebnego kodu. Szczególnie jak […]

Optymalizacja funkcji wyższego rzędu

Gdy już wiemy, czym są funkcje wyższego rzędu w Kotlinie, to możemy zadać pytanie – z wydajnością? Cóż… JVM ma swoje ograniczenia i był projektowany z myślą o programowaniu obiektowym. Jednak natura funkcyjna powoduje, że mamy dużą ilość obiektów pośredniczących. Każda funkcja to osobny obiekt skojarzony z klasą, która jest reprezentowana jako inny obiekt. Coś, […]

TDD oczami twórcy

Tytuł: TDD. Sztuka tworzenia dobrego kodu Autor: Kent Beck Rok: 2004 (PL 2014) ISBN: 978-832-4685-03-5 Drugą książką, którą chciałbym wam zaprezentować z okazji długiego weekendu, jest książka Kenta Becka o TDD. Autor jest twórcą tej techniki, co powoduje, że ciężko jest dyskutować z zawartością książki w kontekście „czy tak powinno wyglądać TDD” (czy ma sens […]

O pracy u podstaw

Tytuł: Software Craftsmanship Autor: Sandro Mancuso Rok: 2014 (PL 2016) ISBN: 978-832-4685-03-5 Nie kupujcie tej książki w języku polskim. Po prostu tłumaczenie w wykonaniu Helionu jest straszne. I by nie być gołosłownym, mała próbka nowatorskich pojęć: baza kodowa – zapewne chodzi o code base, czyli o kod aplikacji, po prostu. „Projekt był realizowany w stylu […]

Funkcje wyższego rzędu w Kotlinie

Wiemy już, że w Kotlinie są funkcje i możemy wywnioskować, że są bytami podstawowymi. W języku ogólno-informatycznym mówimy też o funkcjach wyższego rzędu (ang High-order functionW (HOF). Kotlin ogarnia te oba pojęcia (są one bliskoznaczne). Funkcje wyższego rzędu – co to? Zacznijmy od maleńkiej teorii. Funkcją wyższego rzędu nazywamy taką funkcję, która jako parametr przyjmuje […]

New vs of, czyli o tym jak tworzyć kolekcje

W czasie dyskusji pod jednym z poprzednich wpisów, bodajże na wykopie, pojawiło się pytanie dlaczego w jednym z listingów używałem new ArrayList(), a na innych guavowego Lists.newArrayList. Cóż… wszystko jest kwestią wygody. Czasami wygodniej jest mi utworzyć listę za pomocą guavy. Kiedy indziej tworzę po prostu obiekt z użyciem new. Jednak na poziomie projektu można […]

Zakresy i iteracja

Kolejny mały temat, zanim powrócimy do funkcji. Jak wiemy, Kotlin pozwala na przeciążanie operatorów. Jednym z nich jest operator podwójnej kropki – .., który służy do stworzenia zakresu. A do czego może posłużyć nam zakres? Na przykład do uproszczenia zapisu w pętli: Listing 1. Wykorzystanie zakresu Int fun main(args: Array<String>) { for (i in 1..5) […]

Wstęp do testowania w Kotlinie ze Spek

Gdy półtora miesiąca temu popełniłem pierwszy tekst poświęcony w całości Kotlinowi zamieściłem tam testy napisane na modłę xUnita. Dziś wrócimy do tamtego tematu, ale testy napiszemy z wykorzystaniem Spek. Framework ten jest czymś pomiędzy podejściem TDD, a BDD. Sami twórcy mocno bronią się przed zakwalifikowaniem go jako narzędzia BDD. Swoją drogą Spek to po holendersku […]

Kolekcje w Kotline, czyli małe rzeczy robią dużą różnicę

Jak przystało na nowocześnie zaprojektowany język programowania, Kotlin posiada kolekcje niezmienne i zmienne „na równych prawach”. W przeciwieństwie do Javy, gdzie kolekcje mutowane są preferowane na poziomie API (by zrobić kolekcję niemutowaną, trzeba się naklepać). BTW, wynika to prostego faktu – przed Javą 1.5 nie było metod o zmiennej liczbie argumentów, więc nie można było […]