Narzedzie do sprawdzania obiektu w czasie kompilacji

Odpowiedz Nowy wątek
2015-09-18 09:30
0

Witam,
chciałbym zrobić narzędzie które bedzie wymuszało od programisty tworzenie obiektów tylko serializowanych (funkcje sprawdzajacą czy obiekt/klasa jest serializowana mam zrobioną).
Jak to zrobic np. żeby sprawdzanie wykonywało się na etapie kompilacji?

Pozostało 580 znaków

2015-09-18 10:02
1

https://docs.oracle.com/javas[...]al/java/generics/bounded.html


"Perhaps surprisingly, concurrent programming isn’t so much about threads or
locks, any more than civil engineering is about rivets and I-beams."

Pozostało 580 znaków

2015-09-18 10:53
0

Bardziej chodziło mi to czy jest możliwośc, żeby dało się tworzyć tylko takie klasy które sa serializowane ?

Pozostało 580 znaków

2015-09-18 10:54
0
  1. To klasy czy obiekty?
  2. Generalnie nie. Byłoby to zresztą bez sensu.

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-09-18 11:23
0

Zależy.

Zbytniego sensu nie widzę w wymuszeniu serializowalności klas ale:

  1. Jak projekt jest budowany w mavenie to można napisać własny plugin.
  2. Można też dopisać plugin do IDE, z którego korzystasz.

Ciągle jednak jest pytanie: po co?

Pozostało 580 znaków

2015-09-18 11:31
0

Ponieważ u mnie w projekscie wszytskie akcje i ich atrybuty musza byc serializowane i chciałbym jakoś wymusić na pozniejszych deweloperach przymus tworzenia tylko klas serializowanych.

Pozostało 580 znaków

2015-09-18 11:51
0

To czemu nie zrobisz bazowych klas dla tych akcji i ich atrybutów które będą serializowalne a wszystko będzie musiało z nich dziedziczyć? Wystatrczy że w swoim API przyjmujesz jako parametry AbtractAction i AbstractAttribute. Bo rozumiem że to wymuszenie wynika z tego że twoje API polega na tej serializowalności.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-09-18 11:52
IMO lepiej by było rozwiązać to za pomocą interfejsów, ale to już takie czepianie się na siłę. - wartek01 2015-09-18 12:55

Pozostało 580 znaków

2015-09-18 14:44
0

Wszystko się da. Potrzebujesz napisać własne narzędzie do instrumentacji kodu w czasie kompilacji, które zamiast manipulować bytecodem będzie tylko sprawdzać czy np. klasa implementuje odpowiedni interfejs https://theholyjava.wordpress[...]strumentation-with-javassist/

I serio uważasz że to jest dobry pomysł na rozwiązanie takiego "problemu"? ;) - Shalom 2015-09-18 15:50
Na pewno skuteczny i spełniający warunek sprawdzania w czasie kompilacji. - Koziołek 2015-09-18 16:53

Pozostało 580 znaków

2015-09-18 16:05
0

Klasy abstrakcyjne czy interfejsy to najlepsza opcja.

Ale jeśli już musisz to takie rzeczy powinny być wymuszane przez style guide czy inne wytyczne, a nie kompilacje, bo nie do tego ona służy. Dobrym miejscem na wymuszenie tego typu reguł jest jakiś plugin do jenkinsa czy czego tam używacie. Jest też np. SonarQube to analizowania poprawności kodu, nie robiłem tego, ale pewnie można dopisywać własne pluginy.

Z ciekawości: wszystkie klasy, te utilsowe czy pomocnicze też muszą być serializowalne?


"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." Robert Heinlein.

Pozostało 580 znaków

2015-09-18 16:44
0

@janiu mozesz powiedzieć czemu masz takie dziwne wymaganie? Bo ja rozumiem że pewne klasy muszą spełniać ten warunek ze względu na API w którym używasz tych obiektów i tam możesz to wymusić interfejsem, ale pozostałe klasy po co miałyby spełniać taki warunek? Cchesz zrzucać cały stan aplikacji na dysk?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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