Skip to content

Commit c1a3d4a

Browse files
authored
Sync changes from the english version (#6)
See the original changes at: labs42io#55
1 parent 8c6e395 commit c1a3d4a

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

README.md

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ class Manager {
553553
}
554554
}
555555

556-
function showEmployeeList(employee: Developer | Manager) {
556+
function showEmployeeList(employee: (Developer | Manager)[]) {
557557
employee.forEach((employee) => {
558558
const expectedSalary = employee.calculateExpectedSalary();
559559
const experience = employee.getExperience();
@@ -570,6 +570,24 @@ function showEmployeeList(employee: Developer | Manager) {
570570
}
571571
```
572572

573+
You may also consider adding a union type, or common parent class if it suits your abstraction.
574+
575+
```ts
576+
class Developer {
577+
// ...
578+
}
579+
580+
class Manager {
581+
// ...
582+
}
583+
584+
type Employee = Developer | Manager;
585+
586+
function showEmployeeList(employee: Employee[]) {
587+
// ...
588+
}
589+
```
590+
573591
Du solltest kritisch gegenüber Code-Duplizierung sein. Manchmal gibt es einen Kompromiss zwischen doppeltem Code und erhöhter Komplexität durch die Einführung unnötiger Abstraktion. Wenn zwei Implementierungen aus zwei verschiedenen Modulen ähnlich aussehen, aber in verschiedenen Domänen leben, kann die Duplizierung akzeptabel sein und dem Extrahieren des gemeinsamen Codes vorgezogen werden. Der extrahierte gemeinsame Code führt in diesem Fall eine indirekte Abhängigkeit zwischen den beiden Modulen ein.
574592

575593
**[⬆ zum Anfang](#inhalt)**
@@ -1289,7 +1307,7 @@ Im Fall von Array kannst du ein schreibgeschütztes Array erstellen, indem du `R
12891307
```ts
12901308
const array: number[] = [1, 3, 5];
12911309
array = []; // error
1292-
array.push(100); // array will updated
1310+
array.push(100); // array will be updated
12931311
```
12941312

12951313
**Gut:**
@@ -2354,18 +2372,17 @@ import { promisify } from "util";
23542372

23552373
const write = promisify(writeFile);
23562374

2357-
async function downloadPage(url: string, saveTo: string): Promise<string> {
2375+
async function downloadPage(url: string): Promise<string> {
23582376
const response = await get(url);
2359-
await write(saveTo, response);
23602377
return response;
23612378
}
23622379

23632380
// somewhere in an async function
23642381
try {
23652382
const content = await downloadPage(
2366-
"https://en.wikipedia.org/wiki/Robert_Cecil_Martin",
2367-
"article.html"
2383+
"https://en.wikipedia.org/wiki/Robert_Cecil_Martin"
23682384
);
2385+
await write("article.html", content);
23692386
console.log(content);
23702387
} catch (error) {
23712388
console.error(error);
@@ -2543,6 +2560,9 @@ const daysInMonth = 30;
25432560
const songs = ["Back In Black", "Stairway to Heaven", "Hey Jude"];
25442561
const Artists = ["ACDC", "Led Zeppelin", "The Beatles"];
25452562

2563+
const discography = getArtistDiscography("ACDC");
2564+
const beatlesSongs = SONGS.filter((song) => isBeatlesSong(song));
2565+
25462566
function eraseDatabase() {}
25472567
function restore_database() {}
25482568

@@ -2576,6 +2596,7 @@ type Container = {
25762596

25772597
Verwende bevorzugt `PascalCase` für Klassen-, Interface-, Typ- und Namensraumnamen.
25782598
Verwende bevorzugt `camelCase` für Variablen, Funktionen und Klassenmitglieder.
2599+
Verwende bevorzugt `SNAKE_CASE` für Konstanten.
25792600

25802601
**[⬆ zum Anfang](#inhalt)**
25812602

@@ -2673,6 +2694,7 @@ Mit sauberen und einfach zu lesenden Import-Anweisungen kannst du schnell die Ab
26732694
- Unbenutzte Importe sollten entfernt werden.
26742695
- Benannte Importe müssen alphabetisch geordnet sein (z.B. `import {A, B, C} from 'foo';`)
26752696
- Importquellen müssen innerhalb von Gruppen alphabetisch geordnet werden, z.B.: `import * as foo from 'a'; import * as bar from 'b';`
2697+
- Bevorzuge die Verwendung von `import type` anstelle von `import`, wenn du nur Typen aus einer Datei importierst, um Abhängigkeitszyklen zu vermeiden, da diese Importe zur Laufzeit gelöscht werden
26762698
- Gruppen von Importen werden durch Leerzeilen abgegrenzt.
26772699
- Gruppen müssen folgende Reihenfolge einhalten:
26782700
- Polyfills (d.h. `import 'reflect-metadata';`)
@@ -2687,6 +2709,7 @@ Mit sauberen und einfach zu lesenden Import-Anweisungen kannst du schnell die Ab
26872709
```ts
26882710
import { TypeDefinition } from "../types/typeDefinition";
26892711
import { AttributeTypes } from "../model/attribute";
2712+
import { Customer, Credentials } from "../model/types";
26902713
import { ApiCredentials, Adapters } from "./common/api/authorization";
26912714
import fs from "fs";
26922715
import { ConfigPlugin } from "./plugins/config/configPlugin";
@@ -2702,8 +2725,9 @@ import "reflect-metadata";
27022725
import fs from "fs";
27032726
import { BindingScopeEnum, Container } from "inversify";
27042727

2705-
import { AttributeTypes } from "../model/attribute";
2706-
import { TypeDefinition } from "../types/typeDefinition";
2728+
import type { AttributeTypes } from "../model/attribute";
2729+
import type { Customer, Credentials } from "../model/types";
2730+
import type { TypeDefinition } from "../types/typeDefinition";
27072731

27082732
import { ApiCredentials, Adapters } from "./common/api/authorization";
27092733
import { ConfigPlugin } from "./plugins/config/configPlugin";

0 commit comments

Comments
 (0)