Code Smell refactoring in Doku
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
e4f1670742
commit
868e640ec6
|
@ -13,6 +13,9 @@ auto-save-list
|
|||
tramp
|
||||
.\#*
|
||||
|
||||
Documentation/*.tex
|
||||
Documentation/_minted-*
|
||||
|
||||
# Org-mode
|
||||
.org-id-locations
|
||||
*_archive
|
||||
|
|
|
@ -347,13 +347,46 @@ Code-Beispiel und einen möglichen Lösungsweg bzw. den genommen
|
|||
Lösungsweg beschreiben (inkl./ /(Pseudo-)Code)]/
|
||||
**** Duplicated Code
|
||||
Da es bei Java keine Funktion zum durchsuchen eines Sets gibt wurde an mehreren Stellen ein Konstrukt, wie unten sichtbar
|
||||
verwendert.
|
||||
verwendet.
|
||||
Dies macht den Code unleserlich und schwerer zu warten.
|
||||
#+begin_src java
|
||||
public Optional<Category> getByName(CategoryName name) {
|
||||
return categories.stream().filter(category -> category.getName().equals(name)).findFirst();
|
||||
// LinkRepository.java
|
||||
public Optional<Link> getById(LinkId id) {
|
||||
return links.stream().filter(link -> link.getId().equals(id)).findFirst();
|
||||
}
|
||||
|
||||
public Optional<Link> getByUrl(LinkUrl url) {
|
||||
return links.stream().filter(link -> link.getUrl().equals(url)).findFirst();
|
||||
}
|
||||
#+end_src
|
||||
|
||||
Durch die Einführung des Dekorator-Entwurfsmuster für Set wurde jedoch auch eine eigene Implementation eines Sets eingeführt.
|
||||
Dadurch konnte diese Set Implementation auch einfach durch eine find Methode ergänzt werden, wie dargestellt.
|
||||
|
||||
#+begin_src java
|
||||
// CustomStrictSet.java
|
||||
@Override
|
||||
public Optional<T> find(Predicate<T> predicate) {
|
||||
return set.stream().filter(predicate).findFirst();
|
||||
}
|
||||
#+end_src
|
||||
|
||||
So wurde die Codezeile an vier Stellen ersetzt.
|
||||
Wenn das Refactoring nicht recht früh durchgeführt worden wäre, wären es eventuell sogar mehr Stellen
|
||||
geworden.
|
||||
|
||||
#+begin_src java
|
||||
// LinkRepository.java
|
||||
public Optional<Link> getById(LinkId id) {
|
||||
return links.find(link -> link.getId().equals(id));
|
||||
}
|
||||
|
||||
public Optional<Link> getByUrl(LinkUrl url) {
|
||||
return links.find(link -> link.getUrl().equals(url));
|
||||
}
|
||||
#+end_src
|
||||
|
||||
Das Refactoring wurde mit Commit [[https://tea.filefighter.de/qvalentin/LinkDitch/commit/e4f167074250e791f293eb834a60eb9f63a34664][e4f1670742]] durchgeführt.
|
||||
*** 2 Refactorings
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: refactorings
|
||||
|
|
Binary file not shown.
Reference in New Issue