Skip to content

Commit 5db8e91

Browse files
authored
Merge pull request #12 from ManticSic/translate_gcg14000
Translate GCG14000
2 parents 4e0f7de + fe38d13 commit 5db8e91

File tree

1 file changed

+75
-82
lines changed
  • coding-guidelines/docs/guidelines/general

1 file changed

+75
-82
lines changed
Lines changed: 75 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,81 @@
1-
**en Translation coming soon**
2-
3-
# Namenskonvention
4-
5-
## Verwende US English (GCG14001) <img src="/img/1.png" alt="recommendation level 1" />
6-
Alle Identifier (Typen, Member, Parameter, Variablen etc.) sollte mit Wörtern aus
7-
dem amerikanischen Englisch gebildet werden.
8-
9-
- Die Namen sollten leicht lesbar und grammatikalisch richtig sein.
10-
Beispiel: `HorizontalAlginment` ist besser als `AlignmentHorizontal`
11-
- Lesbarkeit ist wichtiger als Kürze.
12-
Beispiel: `CanScrollHorizontally` ist besser als `ScrollableX`
13-
- Bei den Namen sollte auf Schlüsselwörter aus den verbreiteten
14-
Programmiersprachen verzichtet werden.
15-
16-
## Verwende die richtige Schreibweise für Sprachelemente (GCG14002) <img src="/img/1.png" alt="recommendation level 1" />
17-
Abhängig von der jeweiligen Sprache sollte die richtige Schreibweise für
18-
Sprachelemente wie z. B. Klassen, Methoden und Variablen gewählt werden.
19-
Die am meisten verbreiteten sind
20-
[Camel Case, Pascal Case, Snake Case und Kebab Case][letter-case].
21-
22-
## Verwende keine Zahlen in Variablen, Parametern und anderen Member (GCG14003) <img src="/img/2.png" alt="recommendation level 2" />
23-
Solche Namen resultieren meisten aus Faulheit. Entweder weil man sich nicht
24-
genug Gedanken über einen passenden Namen gemacht hat, oder man mehrere
25-
Elemente, statt einer Liste implementiert hat.
26-
27-
## Verwende keine Präfixe (GCG14004) <img src="/img/2.png" alt="recommendation level 2" />
28-
Typen, Member, Parameter, Variablen etc. sollten nicht mit einem Präfix versehen
29-
werden, um ihren Typ oder Scope zu definieren. Bekannt sind z. B. die Präfixe
30-
`g_` für `global`, `s_` für `static` oder `string`, `i_` für `înteger` und `_`
31-
für private Member.
32-
33-
Nicht in allen Sprachen ist es möglich, diese Regel umzusetzen. In einigen
34-
Sprachen werden Backingfields mit dem Präfix `_` versehen. In andere Sprachen
35-
ist dieses Präfix für private oder spezielle Member nötig.
36-
37-
## Verwende keine Abkürzungen (GCG14005) <img src="/img/2.png" alt="recommendation level 2" />
38-
Abkürzungen wie `btn` für `Button` und `cmd` für `Command` tragen nicht zur
39-
Lesbarkeit und Verständlichkeit bei und sollten daher nicht genutzt. Ebenfalls
40-
sollten Namen vermieden werden, die nur aus einem Buchstaben bestehen, z. B.
41-
`i` für `index` und `q` für `query`.
42-
43-
**Ausnahme: ** es sollten nur Abkürzungen genutzt werden, die allgemein oder in
44-
der jeweiligen Domäne geläufig sind.
45-
46-
## Benenne Member, Parameter und Variablen entsprechend ihrer Bedeutung, nicht ihres Typen (GCG14006) <img src="/img/2.png" alt="recommendation level 2" />
47-
Der Name sollte die Funktion wiederspiegeln und nicht den dahinter stehenden
48-
Typen.
49-
50-
Namen für Listen und Maps sollten den Plural verwenden.
51-
52-
## Nutze bei der Benennung von Typen Substantive, Substantiv-Phrasen oder Adjektiv-Phrasen (GCG14007) <img src="/img/2.png" alt="recommendation level 2" />
53-
Benennung|Beispiel
1+
# Naming convention
2+
3+
## Use US English (GCG14001) <img src="/img/1.png" alt="recommendation level 1" />
4+
All identifiers (Types, member, parameters, variables etc.) should be named
5+
using words from the US English language.
6+
7+
- Names should be easily readble, preferably grammatically correct names.
8+
Example: `HorizontalAlginment` is better than `AlignmentHorizontal`.
9+
- Favor readability over brevity.
10+
Example: `CanScrollHorizontally` is better than `CanScrollHorizontally`.
11+
- Avoid using names that conflicts with keywords from widely spread used
12+
programming languages.
13+
14+
## Use proper notation for language elements (GCG14002) <img src="/img/1.png" alt="recommendation level 1" />
15+
Depanding on the used programming language the proper notation for language
16+
elements such as classes, method and variables should be used. Widely spread
17+
casings are [camel case, pascal case, snake case and kebab case][letter-case].
18+
19+
20+
## Don't include numbers in varfianles, parameters and type members (GCG14003) <img src="/img/2.png" alt="recommendation level 2" />
21+
In most cases these kind of names are lazy excuses for not defining a clear and
22+
intention-revealing name. Often they are used instead of collections.
23+
24+
## Don't use prefixes (GCG14004) <img src="/img/2.png" alt="recommendation level 2" />
25+
Types, type members, parameters, variables etc. shouldn't include a prefix to
26+
define the scope or type. Known prefixes are `g_` for `global`, `s_` for
27+
`static` or `string`, `i_` for `integer` and `_` for private members.
28+
29+
In some programming languages it is not possible to obey this rule. Many
30+
languages uses `_` for backing fields, other to communicate that a member is
31+
private.
32+
33+
## Don't use abbreviations (GCG14005) <img src="/img/2.png" alt="recommendation level 2" />
34+
Abbreviations like `btn` for `button` and `cmd` for `command` harm the
35+
readability and intelligibility. Avoid single character variable names, such as
36+
`i` or `q`. Use `index` or `query`.
37+
38+
**Exception: ** Use well-known acronyms and abbreviations that are widely
39+
accepted or well-known in your work domain. For instance, use acronym `UI`
40+
instead of `UserInterface` and abbreviation `Id` instead of `Identity`.
41+
42+
## Name members, parameters and variables according to their meaning and not their type (GCG14006) <img src="/img/2.png" alt="recommendation level 2" />
43+
The name should describe the functionality and not their type.
44+
45+
Identifiers that refer to a collection type should have plural names.
46+
47+
## Name types using nouns, noun phrases or adjective phrases (GCG14007) <img src="/img/2.png" alt="recommendation level 2" />
48+
Naming|Example
5449
:--|:---
55-
Substantiv|`IComponent`
56-
Substantiv-Phrase|`ICustomAttributeProvider`
57-
Adjektiv-Phrase|`IPersistable`
50+
noun|`IComponent`
51+
noun phrase|`ICustomAttributeProvider`
52+
adjective phrase|`IPersistable`
5853

59-
## Nutze bei der Benennung von Methoden Verben oder Verb-Objekt-Paare (GCG14008) <img src="/img/2.png" alt="recommendation level 2" />
60-
Benennung|Beispiel
54+
## Name methods using verbs or verb-object pairs (GCG14008) <img src="/img/2.png" alt="recommendation level 2" />
55+
Naming|Example
6156
:--|:---
62-
Verb|`Show`
63-
Verb-Objekt-Paar|`ShowDialog`
57+
verb|`Show`
58+
verb-object pair|`ShowDialog`
6459

65-
Die Namen sollten ein Hinweis darauf sein, was die Methode macht.
60+
The name should describe the *what*, and if possible, the *why*.
6661

67-
## Wähle bei der Benennung von generischen Parametern aussagekräftige Namen (GCG14009) <img src="/img/2.png" alt="recommendation level 2" />
68-
Präfixe generische Parameter mit dem Buchstaben `T` für `Type`.
62+
## Name generic type parameters with descriptive names (GCG14009) <img src="/img/2.png" alt="recommendation level 2" />
63+
Always prefix type parameters with the letter `T` for `Type`.
6964

70-
Verwende einen Namen, der die Bedeutung des übergebenen Typen erklärt.
65+
The name should describe the *what*.
7166

72-
## Wähle Namen entsprechend anderer Member innerhalb der jeweiligen Sprache oder des jeweiligen Frameworks (GCG14010) <img src="/img/1.png" alt="recommendation level 1" />
73-
Um einen Entwickler, der bereits mit einer Sprache oder einem Framework vertraut
74-
ist, den Einstieg in ein Projekt möglichst leicht zu machen, sollte Namen
75-
verwendet werden, die in der jeweiligen Sprache bzw. dem jeweiligen Framework
76-
verwendet werden.
67+
## Name members similarly to other members in the used programming language or framework (GCG14010) <img src="/img/1.png" alt="recommendation level 1" />
68+
To let developers, who are already familiar with the used programming
69+
language or framework, finding their way into your project, you should use a
70+
naming pattern which is widely used by the language or framework.
7771

78-
## Vermeide Namen, die verwechselt werden können (GCG14011) <img src="/img/1.png" alt="recommendation level 1" />
79-
Nur weil ein Ausdruck technisch korrekt ist, muss er nicht verständlich sein.
72+
## Avoid short names or names that can be mistaken for other names (GCG14011) <img src="/img/1.png" alt="recommendation level 1" />
73+
Although technically correct, statements like the following can be confusing:
8074
```
8175
bool b001 = (lo == l0) ? (I1 == 11) : (lOl != 101);
8276
```
8377

84-
## Wiederhole nicht den Namen eines Typen innerhalb seiner Member (GCG14013) <img src="/img/1.png" alt="recommendation level 1" />
78+
## Don't repeat the name of a class or enumeration in its members (GCG14013) <img src="/img/1.png" alt="recommendation level 1" />
8579
```
8680
class Employee
8781
{
@@ -99,19 +93,18 @@ class Employee
9993
}
10094
```
10195

102-
## Vermeide Klassennamen die Wörter wie Utility oder Helper beinhalten (GCG14013) <img src="/img/2.png" alt="recommendation level 2" />
103-
Klassen, die Wörter wie `Utility` oder `Helper` in dem Namen haben, sind meist
104-
statisch und entstehen durch Missachten von den Regeln der objektorientierten
105-
Programmierung.
96+
## Avoid class containing terms like `Utility` and `Helper` (GCG14013) <img src="/img/2.png" alt="recommendation level 2" />
97+
Class containing terms like `Utility` or `Helper` are usually static classes and
98+
are introduced without considering object-oriented principles.
10699

107-
## Vermeide Methodennamen das Wort And beinhalten (GCG14014) <img src="/img/2.png" alt="recommendation level 2" />
108-
Methoden, die das Wort `And` beinhalten, machen meist mehr als eine Sache und
109-
verstoßen damit gegen das [Single Responsibility Principle][srp].
100+
## Avoid method names containing the word `and` (GCG14014) <img src="/img/2.png" alt="recommendation level 2" />
101+
A methods containing the word `and` implies, that it is doing more than one
102+
thing, which violates the [Single Responsibility Principle][srp].
110103

111104
## Präfixen von booleschen Variablen und Member (GCG14015) <img src="/img/2.png" alt="recommendation level 2" />
112-
Um die Aussagekraft von booleschen Variablen oder Member zu erhöhen, sollten
113-
diese mit den Worten `is`, `has`, `can`, `allows` oder `supports` versehen
114-
werden.
105+
## Prefixing of boolean variables and members (GCG14015) <img src="/img/2.png" alt="recommendation level 2" />
106+
To make boolean variables and members more descriptive consider prefixing them
107+
with `Is`, `Has`, `Can`, `Allows` or `Supports`.
115108

116109
[letter-case]: https://en.wikipedia.org/wiki/Letter_case#Special_case_styles
117110
[srp]: https://en.wikipedia.org/wiki/Single-responsibility_principle

0 commit comments

Comments
 (0)