Jak wcinacie strumienie?

1

Mamy przykładową listę. Powiedzmy:

List<Integer> lista = List.of(2, 4, 6, 8);

Chcemy zrobić z tego strumień i jakieś inne operacje. Jak formatujecie taki kod? Pod słowem wcięcie rozumiem tabulator albo x spacji (czyli rozumiem tu, że x+1 spacji albo x-1 spacji to niestandardowe wcięcie).
1. Dodatkowym wcięciem?

	public static void main(String[] args) {
		List<Integer> lista = List.of(2, 4, 6, 8);
		List<String> stringiToNieGacie = lista.stream()
			.map(String::valueOf)
			.collect(Collectors.toList());
	}

2. Wcięciami, żeby wyrównać do znaku równości? O ile się da.

	public static void main(String[] args) {
		List<Integer> lista = List.of(2, 4, 6, 8);
		List<String> stringiToNieGacie = lista.stream()
									.map(String::valueOf)
									.collect(Collectors.toList());
	}

3. Wcięciami, żeby wyrównać do pierwszego wywołania?

	public static void main(String[] args) {
		List<Integer> lista = List.of(2, 4, 6, 8);
		List<String> stringiToNieGacie = lista.stream()
											.map(String::valueOf)
											.collect(Collectors.toList());
	}

4. Dodatkowym wcięciem a resztę spacjami do znaku równości?

	public static void main(String[] args) {
		List<Integer> lista = List.of(2, 4, 6, 8);
		List<String> stringiToNieGacie = lista.stream()
			                          .map(String::valueOf)
			                          .collect(Collectors.toList());
			//odtąd w powyższej linii są spacje
	}

4. Dodatkowym wcięciem a resztę spacjami do pierwszego wywołania?

	public static void main(String[] args) {
		List<Integer> lista = List.of(2, 4, 6, 8);
		List<String> stringiToNieGacie = lista.stream()
			                                  .map(String::valueOf)
			                                  .collect(Collectors.toList());
			//odtąd w powyższej linii są spacje
	}
	

5. Robicie tasiemca?

	public static void main(String[] args) {
		List<Integer> lista = List.of(2, 4, 6, 8);
		List<String> stringiToNieGacie = lista.stream().map(String::valueOf).collect(Collectors.toList());
	}

6. Zupełnie inaczej?

0

6

var stringiToNieGacie = lista
						.stream()
						.map(String::valueOf)
						.map(String::valueOf)
						.map(String::valueOf)
						.map(String::valueOf)
						.map(String::valueOf)
						.map(String::valueOf)
						.collect(Collectors.toList()); 
1

Tak

    public static void main(String[] args) {
        List<Integer> lista = List.of(2, 4, 6, 8);
        List<String> stringiToNieGacie = lista
            .stream()
              .map(String::valueOf)
                .collect(Collectors.toList());
    }
1

Co to za temat jest w ogóle ;D niedługo dojdziemy do poziomu taby vs spacje.

Odpowiedz: nie wcinam

1

Tak jak chce linter w konkretnym projekcie

2

Taka ciekawostka, od kilku wersji IntelliJ ćpa jeśli chodzi o breakpointy stawiane przy powcinanych strumieniach. Tzn polecam patrzeć czy po uruchomieniu debuga IntelliJ oznaczył breakpoint jako aktywny czy nie, bo moze okazać się, że w ogóle go oleje.
Kiedys tak nie było i jakoś automatycznie breakpoint zaskakiwał na najbliższej poprzedniej instrukcji.

2
Charles_Ray napisał(a):

Co to za temat jest w ogóle ;D niedługo dojdziemy do poziomu taby vs spacje.

Odpowiedz: nie wcinam

Ostatnio w pracy dyskutowałem o tym z ludźmi. Okazało się, że mamy kilka podejść i każdy stosuje swoje a na code review nikt nie robi z tego tytułu dramy. Gdyby nie to, dalej bym nie wiedział.

@Shalom Poważnie? Nie pamiętam, żebym się z tym spotkał. Jeśli miałem w jednej linii kilka wywołań funkcji i wcisnąłem F7, to Intellij podświetlał mi dokąd może wejść, wtedy wybierałem.

2

Nie wcinam, code format wcina za mnie...

Najbardziej lubię takie ustawienie:

    public Optional<Elf32Section> sectionWithName(String name) {
        return sections().stream()
                .filter(s -> Objects.equals(name, s.header().name()))
                .findFirst();
    }
0

Ostatnio w pracy dyskutowałem o tym z ludźmi. Okazało się, że mamy kilka podejść i każdy stosuje swoje

Możecie też zacząć używać jednego lintera/autoformattera/cokolwiek i zająć się tzw. „pracą twórczą”. Albo mieć więcej czasu na PlayStation :) litości, nie zajmujmy się tym tutaj na forum.

2

Niby takie zapięcie formatera prosta rzecz, ale mi się na przykład nie udało zapiąć Google formattera z custom regułą. Musiałem się ratować Eclipse formatterem (https://github.com/marcin-chwedczuk/polish-holidays/blob/main/pom.xml#L144).

Generalnie samo zapięcie 1h pracy. Dostosowywanie reguł to już długie dnie kłótni i dyskusji. Najlepiej więc podkraść zestaw reguł z jakiegoś projektu w którym kod wygląda dobrze...

1

Używam tego co ma IJ do autoformatowania kodu + konwencja przy projekcie. Najgorsze co może być, to kiedy w jednym projekcie jest pierdyliard konwencji.

0

Brakuje mi odpowiedzi, na szczęście już nie piszę w Javie :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1