algodat-java-intro/03_coding_style.html

822 lines
27 KiB
HTML

<!doctype html>
<html lang="de" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.2">
<title>03: Coding Style - Markdown Docs</title>
<link rel="stylesheet" href="assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.cbb835fc.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="css/print-site-enum-headings1.css">
<link rel="stylesheet" href="css/print-site-enum-headings2.css">
<link rel="stylesheet" href="css/print-site-enum-headings3.css">
<link rel="stylesheet" href="css/print-site.css">
<link rel="stylesheet" href="css/print-site-material.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#03-coding-style" class="md-skip">
Zum Inhalt
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="index.html" title="Markdown Docs" class="md-header__button md-logo" aria-label="Markdown Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Markdown Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
03: Coding Style
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Suche" placeholder="Suche" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Suche">
<button type="reset" class="md-search__icon md-icon" aria-label="Zurücksetzen" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Suche wird initialisiert
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/YamiDoesDev/algodat-java-intro" title="Quellcode" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="index.html" title="Markdown Docs" class="md-nav__button md-logo" aria-label="Markdown Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
Markdown Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/YamiDoesDev/algodat-java-intro" title="Quellcode" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="index.html" class="md-nav__link">
Crashkurs Java im Modul Algorithmen und Datenstrukturen
</a>
</li>
<li class="md-nav__item">
<a href="01_hello_world.html" class="md-nav__link">
01: Hello World
</a>
</li>
<li class="md-nav__item">
<a href="02_basics.html" class="md-nav__link">
02: Basics
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
03: Coding Style
<span class="md-nav__icon md-icon"></span>
</label>
<a href="03_coding_style.html" class="md-nav__link md-nav__link--active">
03: Coding Style
</a>
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1-selbsterklarend" class="md-nav__link">
1. Selbsterklärend
</a>
<nav class="md-nav" aria-label="1. Selbsterklärend">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#11-kommentare" class="md-nav__link">
1.1 Kommentare
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#4-benennung" class="md-nav__link">
4. Benennung
</a>
<nav class="md-nav" aria-label="4. Benennung">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#41-camelcase-fur-variablen-und-funktionen" class="md-nav__link">
4.1 camelCase für Variablen und Funktionen
</a>
</li>
<li class="md-nav__item">
<a href="#42-unterstrich-vor-formalen-parametern" class="md-nav__link">
4.2 Unterstrich vor formalen Parametern
</a>
</li>
<li class="md-nav__item">
<a href="#43-pascalcase-fur-klassen-und-interfaces" class="md-nav__link">
4.3 PascalCase für Klassen und Interfaces
</a>
</li>
<li class="md-nav__item">
<a href="#44-groschreibung-fur-enumeratoren" class="md-nav__link">
4.4 Großschreibung für Enumeratoren
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#5-doppelte-und-einfache-anfuhrungszeichen" class="md-nav__link">
5. Doppelte und einfache Anführungszeichen
</a>
</li>
<li class="md-nav__item">
<a href="#6-formatierung" class="md-nav__link">
6. Formatierung
</a>
</li>
<li class="md-nav__item">
<a href="#8-magische-zahlen" class="md-nav__link">
8. "Magische" Zahlen
</a>
</li>
<li class="md-nav__item">
<a href="#9-dateinamen-und-aufteilung" class="md-nav__link">
9. Dateinamen und -aufteilung
</a>
</li>
<li class="md-nav__item">
<a href="#10-wiederholungen-sind-schlecht" class="md-nav__link">
10. Wiederholungen sind schlecht
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="04_introduction_to_objects.html" class="md-nav__link">
04: Einführung in Objekte
</a>
</li>
<li class="md-nav__item">
<a href="05_types_of_objects.html" class="md-nav__link">
05: Typen von Objekten
</a>
</li>
<li class="md-nav__item">
<a href="06_java_docs.html" class="md-nav__link">
06: JavaDoc
</a>
</li>
<li class="md-nav__item">
<a href="print_page.html" class="md-nav__link">
Print as PDF
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1-selbsterklarend" class="md-nav__link">
1. Selbsterklärend
</a>
<nav class="md-nav" aria-label="1. Selbsterklärend">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#11-kommentare" class="md-nav__link">
1.1 Kommentare
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#4-benennung" class="md-nav__link">
4. Benennung
</a>
<nav class="md-nav" aria-label="4. Benennung">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#41-camelcase-fur-variablen-und-funktionen" class="md-nav__link">
4.1 camelCase für Variablen und Funktionen
</a>
</li>
<li class="md-nav__item">
<a href="#42-unterstrich-vor-formalen-parametern" class="md-nav__link">
4.2 Unterstrich vor formalen Parametern
</a>
</li>
<li class="md-nav__item">
<a href="#43-pascalcase-fur-klassen-und-interfaces" class="md-nav__link">
4.3 PascalCase für Klassen und Interfaces
</a>
</li>
<li class="md-nav__item">
<a href="#44-groschreibung-fur-enumeratoren" class="md-nav__link">
4.4 Großschreibung für Enumeratoren
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#5-doppelte-und-einfache-anfuhrungszeichen" class="md-nav__link">
5. Doppelte und einfache Anführungszeichen
</a>
</li>
<li class="md-nav__item">
<a href="#6-formatierung" class="md-nav__link">
6. Formatierung
</a>
</li>
<li class="md-nav__item">
<a href="#8-magische-zahlen" class="md-nav__link">
8. "Magische" Zahlen
</a>
</li>
<li class="md-nav__item">
<a href="#9-dateinamen-und-aufteilung" class="md-nav__link">
9. Dateinamen und -aufteilung
</a>
</li>
<li class="md-nav__item">
<a href="#10-wiederholungen-sind-schlecht" class="md-nav__link">
10. Wiederholungen sind schlecht
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/YamiDoesDev/algodat-java-intro/edit/main/docs/03_coding_style.md" title="Seite editieren" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1 id="03-coding-style">03: Coding Style</h1>
<p>Programme können sehr schnell sehr komplex werden.
Daher ist es wichtig, sich an Stil-Regeln zu halten, um sie möglichst
verständlich zu schreiben.</p>
<h2 id="1-selbsterklarend">1. Selbsterklärend</h2>
<p>Code sollte sich so gut wie möglich selbst erklären.
Dazu sind sprechende Variablen-, Funktions-, Klassennamen etc. erforderlich.
Kurze Namen sind nur in kleinen Gültigkeitsbereichen oder bei klarer Bedeutung
(z.B. <code>i</code> für for-Schleifen Iteratoren, <code>y</code> für vertikale Position) erlaubt.</p>
<h3 id="11-kommentare">1.1 Kommentare</h3>
<p>Kommentare sind in diesem Zusammenhang vorallem zur Strukturierung/Abgrenzung
des Codes empfohlen, und um die
Verständlichkeit zu erhöhen.
Kommentare sollten nicht das Offensichtliche wiederholen (siehe Bild).</p>
<p><img alt="Cat labeled Cat" src="https://i.redd.it/iuy9fxt300811.png" /></p>
<p>Selbstverständlich kann Code zum besseren eigenen Verständnis kommentiert
werden.
Denken Sie aber daran, dass bei Code Änderungen auch die Kommentare mit gepflegt
werden müssen.</p>
<h2 id="4-benennung">4. Benennung</h2>
<p>Die folgenden Regelungen sind empfohlen und in keinster Weise verpflichtend.</p>
<h3 id="41-camelcase-fur-variablen-und-funktionen">4.1 camelCase für Variablen und Funktionen</h3>
<p>Variablen- und Funktionsnamen beginnen mit Kleinbuchstaben und folgen der
camelCase Notation, d.h. bei zusammengesetzten
Namen beginnen die Wortteile im Inneren mit einem Großbuchstaben.<br />
Funktionsnamen beschreiben dabei eine Aktivität (
z.B. <code>calculateHorizontalPosition()</code>) oder eine Frage (z.B. <code>isHit()</code>).</p>
<p>Gleiches gilt für Attribute und Methoden.</p>
<h3 id="42-unterstrich-vor-formalen-parametern">4.2 Unterstrich vor formalen Parametern</h3>
<p>Formale Parameter folgen dem Variablen-Benennungs-Schema, mit dem Zusatz eines
Unterstriches am Anfang.
(z.B. <code>moveTo(_x: number, _y: number)</code>).</p>
<h3 id="43-pascalcase-fur-klassen-und-interfaces">4.3 PascalCase für Klassen und Interfaces</h3>
<p>Die Namen von Klassen und Interfaces beginnen mit einem Großbuchstaben und
folgen sonst der Kamelnotation (also
PascalCase).<br />
Klassen und Interfaces beschreiben im Normalfall ein bestimmtes Objekt, nicht
eine Gruppe von Objekten.
Dies sollte sich im Namen wiederspiegeln (<code>Produkt</code> statt <code>Produkte</code>).</p>
<h3 id="44-groschreibung-fur-enumeratoren">4.4 Großschreibung für Enumeratoren</h3>
<p>Die Namen von Enumerationen und deren Elemente werden durchgehend mit
Großbuchstaben geschreiben. Wortteile werden bei
Bedarf mit Unterstrich getrennt.</p>
<h2 id="5-doppelte-und-einfache-anfuhrungszeichen">5. Doppelte und einfache Anführungszeichen</h2>
<p>Es empfielt sich, einfache Anführungszeichen <code>' '</code> für char und doppelte
Anführungszeichen <code>" "</code> für Strings zu verwenden.</p>
<h2 id="6-formatierung">6. Formatierung</h2>
<p>Code ist sinnvoll Formatiert mit Einschüben etc.
Im Regelfall unterstützt VSCode dies Automatisch. Machen Sie Gebrauch von der
automatischen Formatierungsfunktion.</p>
<ul>
<li><a href="https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html#reformat_file">Anleitung für IntelliJ</a></li>
<li><a href="https://stackoverflow.com/questions/29973357/how-do-you-format-code-in-visual-studio-code-vscode">Anleitung für Visual Studio Code</a></li>
<li><a href="https://praxistipps.chip.de/eclipse-autoformat-code-so-gehts_98369">Anleitung für Eclipse</a></li>
</ul>
<h2 id="8-magische-zahlen">8. "Magische" Zahlen</h2>
<p>Der Gebrauch von "magischen" Zahlen sollte vermieden werden. Solange es nicht
extrem offensichtlich ist, wofür eine Zahl
steht (z.B. <code>Math.pow(x, 5)</code>), sollte eine Variable (nach den oben genannten
Guidelines) angelegt werden, welcher die
Zahl als Wert zugewiesen wird. So entsteht der Zusammenhang zwischen der
Variablen und ihrer Bedeutung, und der Wert
kann an einer zentralen Stelle angepasst werden.</p>
<h2 id="9-dateinamen-und-aufteilung">9. Dateinamen und -aufteilung</h2>
<p>Dateinamen dürfen keine Leerzeichen oder Umlaute enthalten, sind sonst aber frei
wählbar (s.u. für Einschränkungen). Es
wird empfohlen, die Zeichenwahl auf a-z, A-Z, 0-9 und _ zu beschränken.<br />
Code kann auf mehrere Dateien aufgeteilt werden, sofern dies sinnvoll
erscheint (z.B. um eine Trennung von Funktion und
Daten zu erreichen). Wenn Klassen verwendet werden, sollte jede ihre eigene
Datei bekommen. Sofern eine Datei eine
bestimmte Klasse enthält, soll die Datei mit dem Namen der Klasse benannt sein.</p>
<h2 id="10-wiederholungen-sind-schlecht">10. Wiederholungen sind schlecht</h2>
<p>Code der sich ohne oder nur mit minimalen Änderungen wiederholt, kann in den
allermeisten Fällen besser geschrieben
werden, z.B. über eine Funktion mit Übergabeparametern, oder indem man nur den
geänderten Teil implementiert oder
überschreibt, während der Rest für alles gleich generiert wird.<br />
Dies hat viele Vorteile: Es macht den Code generell übersichtlicher (und damit
besser verständlich), kürzer, und
wartungsfreundlicher.</p>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime">November 2, 2022 20:46:05</span>
<br>
Erstellt:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime">November 2, 2022 20:46:05</span>
</small>
</div>
<div class="md-source-date">
<small>
Authors: <span class='git-page-authors git-authors'><a href='mailto:yamidoesdev@gmail.com'>YamiDoesDev</a></span>
</small>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="02_basics.html" class="md-footer__link md-footer__link--prev" aria-label="Zurück: 02: Basics" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Zurück
</span>
02: Basics
</div>
</div>
</a>
<a href="04_introduction_to_objects.html" class="md-footer__link md-footer__link--next" aria-label="Weiter: 04: Einführung in Objekte" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Weiter
</span>
04: Einführung in Objekte
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.config.lang": "de", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Suche", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version.title": "Version ausw\u00e4hlen"}}</script>
<script src="https://unpkg.com/iframe-worker/polyfill"></script>
<script src="search/search_index.js"></script>
<script src="assets/javascripts/bundle.9c69f0bc.min.js"></script>
<script src="js/print-site.js"></script>
<script src="js/arithmatex.config.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</body>
</html>