sylwke3100
Jak metodę parseData z tego kodu https://github.com/sylwke3100/cristallparser/blob/unstable-qt/CristallParser.cpp troszke zmiejszyć rozbijąjąc na coś mniejszego ? Ja nie mam pomysłu żeby to miało ręce i nogi

#programowanie #parser #cpp #cristallparser
4
  • Najlepsze
  • Wszystkie komentarze
sylwke3100
sylwke3100 Autor
  • adult
Treść przeznaczona dla osób powyżej 18 roku życia...
2
echelon_
@sylwke3100: Mówi ci coś zasada programowania SOLID? Nie? To doczytaj sobie ;)

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
1
sylwke3100
@echelon_: Alpha to są alfabet ono ma osobą zasdę niż Digit (liczby)

pos to jest pozycja string aktualna a po to jest to pozycja stringa gdzie jest pierwszy znak wykrytego wyrażenia np

Jakiś tekst</ala>

Z tymi warunkami to właśnie głównym problemem jest ich nazwa i lokacja czy tworzyć nnową klase czy lokować w DetectTools/CristallParser
1
Rincewind
@sylwke3100: Powiem najprościej, od czego bym zaczął. Masz u siebie

for
1
tenji
@sylwke3100:

w parseData zostawiasz tylko petle, reszte przenosisz do parseElement, Zawartosc ifow przenosisz do oddzielnych metod parseSingleElement (lub cos takiego), parseMultiElement i parseCOstamElement
0
sylwke3100
@echelon_: Nie nic mi nie mówi. Ale jak tak patrze to tą pierwszą zasadę chyba mój kod spełnia(o ile ją zdrozumiałem
0
echelon_
@sylwke3100: Nie. Twój kod nie spełnia pierwszej zasady. Jesteś w stanie jednym zdaniem napisać co robi metoda parseData? Parsuje dane? Nie, to nie jest dobra odpowiedź.
0
sylwke3100
@echelon_: Możliwe. Pomożesz mi go ogarnąć żeby spełniał jakieś z tym zasad ?
0
echelon_
@sylwke3100: Hmm... dlaczego by nie? Generalnie refactoring jest trudny. Trzeba mieć pomysł a jak się go nie ma to trzeba stosować metodę małych kroków. Szukaj najpierw takich małych kawałków kodu po parę linijek które robią to samo, robią coś co ma dać rezultat który można opisać jednym zdaniem. Z tych paru linijek można zrobić metodę która spełnia zasadę single-responsibility.

Ale tak patrzę na szybko i nie widzę oczywistych metod. Więc spróbujmy
0