Jakie są najdłuższe klasy w waszym projekcie?

Odpowiedz Nowy wątek
2019-11-05 08:20

Rejestracja: 7 lat temu

Ostatnio: 7 godzin temu

0

Cześć,
Tak jak w temacie, top 10 najdłuższych plików z kodem źródłowym u was, niżej zarzucam komendę do wygodnego sprawdzenia. Najlepiej na clean buildzie i z wyłączeniem testów (one z natury są długie)

find . -name "*.kt" ! -path '*Test.kt' ! -path '*IT.kt' ! -path '*TestData.kt' -type f | xargs wc -l | sort -rn | grep -v ' total$' | head -1

Moje top10
32563 Total lines of code
445 CardReaderViewModel.kt
387 AndroidFormattedReceiptFactory.kt
348 AcqAuthorisationTransactionRequestFactory.kt
307 RetailerTransactionResponseFactory.kt
307 ModuleNavigator.kt
305 TMSConfigurationToDomain.kt
276 InstalledAppNavigator.kt
270 AcqRequestCommonDataFactory.kt
250 RetrofitTmsNetwork.kt
237 RetailerPersistentProvider.kt

edytowany 1x, ostatnio: Koziołek, 2020-01-09 10:56
jest od tego plugin do intellij ;) - danek 2019-11-05 17:18
o muszę go poszukać, jak się zwie? - viader 2019-11-06 08:17
statistics czy coś takigo - danek 2019-11-06 11:08
fajnie działa, dzięki za cynk - viader 2019-11-06 14:44

Pozostało 580 znaków

2019-11-05 17:20

Rejestracja: 5 lat temu

Ostatnio: 13 godzin temu

Lokalizacja: Poznań

1

min - 3
avg - ~30
max - ~170

taki microservice trochę ;)


Spring? Ja tam wole mieć kontrole nad kodem ᕙ(ꔢ)ᕗ
Haste - mała biblioteka do testów z czasem.
30 to w Javie ma pusta klasa... :P - Shalom 2019-11-05 17:21
w kotlinie data clasy trochę zaniżają :P - danek 2019-11-05 17:24
u mnie min będzie chyba 4 linijki, bo: package, pusta linia, data class, i pusta linia na końcu pliku (to wymaganie mamy przy wszystkich plikach w projekcie) - viader 2019-11-06 08:19

Pozostało 580 znaków

2019-11-05 18:57

Rejestracja: 2 lata temu

Ostatnio: 3 godziny temu

Lokalizacja: PL

1

Czasem to i widuje po 500 linijek legacy, ale z reguły to około 100-150

Pozostało 580 znaków

2019-11-05 19:08

Rejestracja: 3 lata temu

Ostatnio: 16 minut temu

Lokalizacja: U krasnoludów - pod górą

3

Znalazłem 306 (i kilka w okolicy 150) reszta poniżej 100.
Najfajniejsze, że ta 306 to swie sklejone klasy w kotlinie - jedna nad drugą (powiązane, ale nie wiem co miałem na myśli pchając je do jegnego pliku)

Przy okazji - doipiero pracuje nad zrobieniem lepszych metryk jakości pod kotlina - sonar mi się nie sprawdza - za mało sprawdza i do tego ma defaulty dobre do javy.
Wbijam bardziej restrykcyjne i wbijam je w build (korzystam z defekt).
Max długość też jakąś dorzucę (pewnie między 200, a 150).


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 2x, ostatnio: jarekr000000, 2019-11-06 07:12
O proszę, wrzucenie czegoś takiego na verify przy Jenkinsie to nawet spoko pomysł, tylko bez testów i wygenerowanych plików. - viader 2019-11-06 08:22
ja ogólnie korzystam z ktlinta i detekta jako tych podstawowych tooli do statycznej analizy kodu, ale nie pogardzę jakimiś dodatkowymi narzędziami - viader 2019-11-06 08:25

Pozostało 580 znaków

2019-11-06 12:59

Rejestracja: 2 lata temu

Ostatnio: 3 godziny temu

1

Projekt legacy, największa klasa javowa to 3619 linii :D. A cała moja robota praktycznie polega na refactor/redesigne :P.

Pozostało 580 znaków

2019-11-06 15:16

Rejestracja: 6 lat temu

Ostatnio: 7 godzin temu

1

screenshot-20191106151510.png

Pozostało 580 znaków

2019-11-06 16:17

Rejestracja: 16 lat temu

Ostatnio: 2 tygodnie temu

1

Ja kiedyś znalazłem (kilka lat i pracodawców temu) servlet na 8400 linii.... Dlatego tam już nie pracuję :)


Chciałbym to zobaczyć.... - scibi92 2019-11-06 16:49
@scibi92: musisz uwierzyć na słowo. Pierwszy raz widziałem, żeby sonar pokazał dług technologiczny w latach :). A servlet robił wszystko.... to był god object - Black007 2019-11-06 19:54
Ale ja Torbir wierze, tylko po prostu mówie że chciałbym to zobaczyć - scibi92 2019-11-06 19:54
Ja kiedys bylem na praktykach w firmie gdzie jeden produkt mial tylko dwie klasy, obie po okolo 8000-9000 linii. - Ulrich 2020-01-09 15:32

Pozostało 580 znaków

2020-01-09 09:04

Rejestracja: 3 lata temu

Ostatnio: 4 dni temu

1

Trochę odkopie, a co tam. Siadam właśnie do taska wycenionego na godzinkę z hakiem, zmianę jakiejś pierdoły w chyba najbardziej skomplikowanym algorytmie w aplikacji. Wszystko byłoby fajnie, gdyby nie to że cała logika, która w tym przypadku powinna mieć wydzielony osobny moduł, jest zaimplementowana w jednej klasie na 2000~ linijek, nazwy metod ledwo mieszczą się na ekranie i kompletnie nic nie mówią, a do tego każda jedna z nich jest public. Całość spłodzona jakiś rok temu przez seniora, który ma prawie 10 lat doświadczenia...

Pokaż pozostałe 5 komentarzy
@cerrato: dlatego wspomniałem, że to powinien być osobny moduł a nie jeden wielki god class :D - Emdzej93 2020-01-09 09:54
Właśnie jeśli chodzi o taką skomplikowaną logikę to mam mieszane uczucia. Raz w życiu zdarzyło się, że dzieliłem taką metodę na ~400 linii mimo, że jedynym sensem tego było to, żeby przeszła statyczna analiza kodu. - wartek01 2020-01-09 11:13
@wartek01: czekaj czekaj, uważasz że metoda na 400 linii NIE miała sensu do podziału na mniejsze cześci? - Emdzej93 2020-01-09 17:21
@Emdzej93: tak. To, co realnie by miało sens to zaprząc jakiś silnik reguł. Metoda składała się z kilkunastu parametrów, reszta to if'y w stylu: if(valueA == 10 & valueB < 5) -> zrób jakieś wyliczenia i zwróć wynik, if (valueA == 10 && valueB == 5) -> zrób inne wyliczenia i zwróć wynik itp. Być może ktoś mądrzejszy ode mnie mógłby zobaczyć jakiś wzorzec który dałoby się logicznie podzielić, ja nie znalazłem ani też nikt kto na to spojrzał. Natomiast wynik, czyli if (valueA == 10 && valueB < 5) return doSomeCalculations() pomnożone kilkanaście razy jakoś nie wyglądało 1/2 - wartek01 2020-01-09 21:39
fajnie, tym bardziej, że wymyślanie nazw tych metod to było jedno z najtrudniejszych programistycznych wyzwań w moim życiu. Na plus mogę dodać, że Extract Method z IntelliJ zadziałało :) 2/2 - wartek01 2020-01-09 21:40

Pozostało 580 znaków

2020-01-09 10:57

Rejestracja: 12 lat temu

Ostatnio: 3 dni temu

0

W kotlinie dochodzi do 200, w Javie około 24000 (legacy, które już praktycznie zaorano).

Pozostało 580 znaków

2020-01-09 12:01

Rejestracja: 7 lat temu

Ostatnio: 3 godziny temu

1

#1 to klasa typowo static utils, ok. 500 linijek. Następna to klasa ze stałymi na ~300 linii. Potem już wszystko poniżej 200.
Tragedii nie ma.

Pozostało 580 znaków

2020-01-09 14:24

Rejestracja: 6 lat temu

Ostatnio: 13 godzin temu

2

I tak nikt z was nie pobije kodu zrodlowego Telegrama:
https://github.com/DrKLO/Tele[...]telegram/ui/ChatActivity.java

taki kod, a mimo to jest jedną z najlepiej dopracowanych apek na androida :) - mad_penguin 2020-01-09 14:53
Zawiesiło mi chrome'a :D - Black007 2020-01-10 20:22

Pozostało 580 znaków

Odpowiedz

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