Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door Sander den Heijer

Product Owner

Refactor van membercode - Development-iteratie #163

27-08-2019 • 14:22

20 Linkedin Google+

Onze developers hebben iteratie #163 opgeleverd. In deze iteratie is achter de schermen veel gedaan aan de sitemaps, membercode en css-snippets. Daarnaast is verder gebouwd aan het vacatureonderdeel en hebben we een Meet-up-kalender toegevoegd aan de frontpage.

Refactor van de 'member'-code

De term technical debt wordt in de programmeerwereld gebruikt om aan te geven dat er sprake is van verouderde code. Doordat Tweakers al behoorlijk lang bestaat, hebben we uiteraard ook de nodige technical debt opgebouwd. Dat is niet per definitie een probleem; de code heeft doorgaans ook al die jaren goed gewerkt, maar volgt vaak een oude code style en bevat niet de nieuwste inzichten in programmeren. Al met al is het daardoor meestal wat moeilijker om hem te wijzigen of samen te laten werken met nieuwe functionaliteit. Daarom proberen we bij elk project dat we doen, de relevante technical debt te verminderen. Bovendien hebben we projecten die specifiek zijn gericht op het actualiseren, ook wel 'refactoring' genoemd, van verouderde onderdelen van de site.

Een van die onderdelen van Tweakers is de functionaliteit rond accounts, die in onze code 'members' heten. Deze term gebruiken we al sinds het vroege begin en er was dan ook nog code uit die tijd. Daaraan zijn in al die jaren veelvuldig aanpassingen en uitbreidingen gedaan. Dat werd langzaamaan steeds lastiger, vaak juist door eerder gedane wijzigingen. Kortom, het was de hoogste tijd om een en ander te actualiseren.

In de afgelopen sprints hebben we de kern van deze functionaliteit grotendeels herschreven. Om het project 'klein' te houden, hebben we heel bewust geen nieuwe functionaliteit toegevoegd en alleen daar aanpassingen gedaan waar dat nodig was om de vernieuwde membercode te kunnen gebruiken. Ondanks die beperkte scope zijn uiteindelijk 569 bestanden aangepast, waarbij zo'n 7.700 regels zijn vervangen door iets minder dan 10.700 nieuwe. Die toename komt vooral doordat een aantal god objects en lange methodes zijn opgesplitst in verschillende losse classes en/of methodes, waardoor er simpelweg meer klasse- en methodesignaturen zijn. Daarnaast zijn voor de nieuwe implementaties de nodige tests geschreven.

Omdat aan de functionaliteit van de website niets is veranderd, merk je als het goed is niets van deze wijzigingen. Doordat echter zoveel code moest worden aangepast, is het natuurlijk goed mogelijk dat er toch ergens een bugje in is geslopen. Dat horen we dan uiteraard graag in ons bugforum.

Meet-up-kalender

Op de frontpage hebben we een Meet-up-kalender toegevoegd. Voorheen was het voor een bezoeker op de frontpage best lastig om een overzicht te vinden van de komende evenementen. Daarom is er nu een specifiek blok gekomen waarin de Meet-ups en andere Tweakers-evenementen worden getoond.

Sitemaps

Voor verschillende onderdelen van de site hebben we nieuwe sitemaps gemaakt. Om die te kunnen maken, hebben we eerst een refactor van de sitemapcode gedaan. Daarna konden we nieuwe sitemaps toevoegen voor afbeeldingen in de Pricewatch, video's en de banen binnen Tweakers Carrière. Met deze sitemaps geven we zoekmachines meer en betere informatie over de informatie op de site.

Update custom-css

Na de vakantieperiode zijn we in deze iteratie ook weer aan de slag gegaan met de custom-css-feature. Dat is zelfs een inhaalslag geworden waarbij we functionaliteit hebben gebouwd waarmee je door css-snippets van gebruikers kunt bladeren, deze kunt bekijken en kunt toevoegen aan je eigen custom-css. In de komende iteraties gaan we deze functionaliteit completeren en kijken wat nog nodig is om tot een eerste release te komen.

Reacties (20)

Wijzig sortering
Niet echt belangrijk, maar jullie beschrijving van technical debt is meer legacy (simpelweg 'oude code'). Technical debt zijn meer bewust achtergebleven refactors (vandaar de 'debt'). Bijvoorbeeld als je nieuwe code introduceert en oude deprecate, maar niet direct wegrefactort, dan is dat je technical debt na een bepaalde story.

Oude, of legacy, code is niet per definitie slecht. Technical debt is dat in feite wel.

[Reactie gewijzigd door Bosmonster op 27 augustus 2019 15:38]

Neemt niet weg dat legacy code ook een technical dept kan zijn.
Ja, maar legacy en technical debt zijn twee aparte zaken. Ze kunnen samenvallen uiteraard, maar nieuwe code kan ook technical debt bevatten; als je shortcuts neemt in je code om de opleverdatum te halen heb je splinternieuwe code, maar wel met technical debt. Als je daar tot in lengte van jaren niets aan doet, dan heb je inderdaad legacy code met technical debt, maar het één impliceert zeker niet het andere.

Zoals @Bosmonster al zegt:
Oude, of legacy, code is niet per definitie slecht. Technical debt is dat in feite wel.
En bouw enkele van je schulden dan 20 jaar op en het is nog slechts een semantisch onderscheid. ;)
En bouw enkele van je schulden dan 20 jaar op en het is nog slechts een semantisch onderscheid. ;)
Heb je misschien één of twee voorbeelden in gedachte (die je met ons mag delen) die al zolang meegingen en waarbij je echt dacht "oh god, waarom hebben we dit niet eerder opgeruimd... waarom is dit überhaupt ooit zo gebouwd!?", ik wordt nu eigenlijk wel nieuwsgierig. :+
Wij hanteren de term ook voor 'verouderde code'; zoals @pirke verderop ook benoemt.
In het geval van de member-code was trouwens jouw voorbeeld/uitleg ook relevant ;)

Maar helemaal eens dat oude code niet per se slecht is.
Debt is niet perse slecht, anders zouden we ook geen staatsschuld of een hypotheek hebben ;).
Alleen betaal je wel een prijs, en is er al snel het moment dat je dat zat bent, en liever 'de schuld' inlost. Maar dat moet je wel afwegen tegen wat je dan laat staan, bijvoorbeeld de nieuwe auto.

Ik weet dus niet of het verwijderen van deprecated code nu echt iets oplost qua 'kosten' van aanpassingen, maar dat zal per omgeving anders zijn.
Handig die events op de homepagina! Zouden jullie deze events kunnen aanvullen met andere tech-related events, zoals bijvoorbeeld een Google I/O of Apple Keynote livestream en andere beurzen en evenementen? Dat zou wel handig zijn!

[Reactie gewijzigd door TimmiX op 27 augustus 2019 16:21]

Inderdaad, hier ben ik ook wel voor te vinden! Het enige probleem dat ik zie is dat ze misschien (in)direct reclame maken voor andere events.
Ik zie dat niet als reclame, maar meer informatief. Vergelijkbaar met een nieuwsartikel wat na afloop vaak wordt geschreven.
Je zou dit kunnen inzetten door niet rechtstreeks te linken naar de website van het externe event, maar naar een landingspagina binnen Tweakers. Daar kunnen dan -naast algemene info over het event- alle gerelateerde nieuwsberichten en forumtopics worden getoond.
Gave feature, die kalender. Komt er ook een iCal / *.ics ter beschikking?
Dat staat nog niet op de planning. Maar als de behoefte daaraan groot is kunnen we het overwegen. :)
Was er hier sprake van veel singleton gebruik? Is misschien leuk om wat meer op in tegaan voor de geinteresseerde tweakers onder ons.
Goede code wordt vanzelf slechte code, ook al verander je hem nooit, simpelweg omdat de buitenwereld (en de requirements) waar die code in draait constant veranderd :)
Koel om te zien dat ook web development te maken heeft met de traditionele aspecten van (applicatie-) software ontwikkeling.
De term technical debt wordt in de programmeerwereld gebruikt om aan te geven dat er sprake is van verouderde code.
Dan is jullie definitie van technical debt een andere dan dat ik heb. Verouderde code hoeft niet direct te betekenen dat het technical debt is.

De definitie ervan is over het algemeen ook een andere. Technical debt betekend dat er (na verloop van tijd) zaken wellicht simpeler aangepakt kunnen worden. Maar dat hoeft niet per definitie te betekenen dat de code verouderd is; wellicht kan het bij een refactoring zelfs hergebruikt worden!
Ah, goed om te zien dat er niet langer om de member code heen gewerkt hoeft te worden. Keep it up 👍
Klopt het dat de poll op de homepage ook is weggehaald? Dit valt me al langer op maar ik zie dit nergens terug komen in deze devplans (wellicht ook meer content dan development).
De poll op de homepage bestaat nog. Alleen is er op dit moment geen poll actief.


Om te kunnen reageren moet je ingelogd zijn


Apple iPhone 11 Nintendo Switch Lite LG OLED C9 Google Pixel 4 FIFA 20 Samsung Galaxy S10 Sony PlayStation 5 Moederborden

'14 '15 '16 '17 2018

Tweakers vormt samen met Tweakers Elect, Hardware Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True