Czy istnieje konwencja nazewnictwa dla metod zwracających strumień? Jedyna wzmianka, którą znalazłem, to answer on S.O (ostatni akapit), ale nie widzę, na czym ona jest oparta.Nazewnictwo metod java, które zwracają strumienie
Odpowiedz
Od kiedy napisałem ten akapit, czuję się zmuszony do udzielenia odpowiedzi. :-)
Załóżmy, że masz klasę, która reprezentuje agregację rzeczy jednego typu, i chcesz zwrócić jej Stream
do osoby dzwoniącej.
Jeśli jest całkowicie jednoznaczny co do tego, co powracasz, możesz równie dobrze wywołać metodę stream()
. Istnieje wiele metod w JDK o nazwie stream()
, które zwracają strumień oczywistego typu.
Czasami to, co wracasz, to różne przedstawienia tej samej rzeczy, różnego rodzaju rzeczy i tak dalej. W takim przypadku wydaje się, że istnieje konwencja wyboru rzeczownika w liczbie mnogiej, która reprezentuje typ rzeczy zwracanych w strumieniu.
Aby to zobaczyć, zajrzyj do Javadoc i kliknij link Użyj na górnym pasku nawigacyjnym. Spowoduje to przejście do strony z odsyłaczami. Spójrz na wszystkich metod, które mają wartości zwracanych typu jesteś zainteresowany.
Na przykład, patrz Zastosowanie stron dla Stream
, IntStream
, LongStream
i DoubleStream
. Istnieje wiele metod o nazwie stream()
, które zwracają strumienie. Ale są też:
java.io.BufferedReader.lines()
java.lang.CharSequence.chars()
java.lang.CharSequence.codePoints()
java.nio.CharBuffer.chars()
java.nio.file.File.lines()
java.util.Random.ints()
java.util.Random.longs()
java.util.Random.doubles()
java.util.SplittableRandom.ints()
java.util.SplittableRandom.longs()
java.util.SplittableRandom.doubles()
java.util.concurrent.ThreadLocalRandom.ints()
java.util.concurrent.ThreadLocalRandom.longs()
java.util.concurrent.ThreadLocalRandom.doubles()
Oczywiście, istnieje wiele metod, które nie są zgodne z tym. Klasa narzędzia plików NIO ma Files.find()
, Files.list()
i Files.walk()
. Strumień wyników z podziału ciągu jest zwracany przez java.util.regex.Pattern.splitAsStream
. Nie sądzę, żeby ktokolwiek polubił przyrostek AsStream
, ale znowu nikt nie mógł wymyślić nic lepszego. Z drugiej strony proponowane ulepszenie JDK 9, aby uzyskać strumień wyników dopasowań do wyrażenia regularnego, zostanie nazwane Matcher.results()
.
Oświecenie jak zawsze. Dzięki. – Vitaliy
Opiera się na tym, co stało się w istniejącym obecnie kodzie, tj. Samym JRE i przykładowym kodzie w tutorialach.Może nie być jeszcze w żadnym przewodniku po stylach, ale jeśli Stuart Marks rozpozna i poleci ten wzór, prawdopodobnie wkrótce stanie się to powszechnym wzorem. Btw, doszedłem do tego samego wniosku niezależnie, więc jest to * naprawdę * rozpoznawalny wzór. – Holger