You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As we know from the chapter <info:structure>, comments can be single-line: starting with`//` and multiline:`/* ... */`.
3
+
Jak víme z kapitoly <info:structure>, komentáře mohou být jednořádkové, které začínají`//`, a víceřádkové`/* ... */`.
4
4
5
-
We normally use them to describe how and why the code works.
5
+
Obvykle je používáme k popisu, jak a proč kód funguje.
6
6
7
-
At first sight, commenting might be obvious, but novices in programming often use them wrongly.
7
+
Na první pohled může být komentování samozřejmé, ale začínající programátoři je často používají nesprávně.
8
8
9
-
## Bad comments
9
+
## Špatné komentáře
10
10
11
-
Novices tend to use comments to explain "what is going on in the code". Like this:
11
+
Začátečníci tíhnou k psaní komentářů, které vysvětlují, „co se v kódu děje“. Například:
12
12
13
13
```js
14
-
//This code will do this thing (...) and that thing (...)
15
-
// ...and who knows what else...
16
-
very;
17
-
complex;
18
-
code;
14
+
//Tento kód dělá toto (...) a toto (...)
15
+
// ...a kdo ví, co jiného...
16
+
velmi;
17
+
složitý;
18
+
kód;
19
19
```
20
20
21
-
But in good code, the amount of such "explanatory" comments should be minimal. Seriously, the code should be easy to understand without them.
21
+
V dobrém kódu by však množství takových „vysvětlujících“ komentářů mělo být minimální. Kód by měl být srozumitelný i bez nich.
22
22
23
-
There's a great rule about that: "if the code is so unclear that it requires a comment, then maybe it should be rewritten instead".
23
+
Platí jedno zlaté pravidlo: „Je-li kód natolik nejasný, že vyžaduje komentář, možná by měl být přepsán.“
24
24
25
-
### Recipe: factor out functions
25
+
### Recept: extrahujte funkce
26
26
27
-
Sometimes it's beneficial to replace a code piece with a function, like here:
27
+
Někdy se vyplatí nahradit kus kódu funkcí, například:
28
28
29
29
```js
30
-
functionshowPrimes(n) {
31
-
nextPrime:
30
+
functionzobrazPrvočísla(n) {
31
+
dalšíPrvočíslo:
32
32
for (let i =2; i < n; i++) {
33
33
34
34
*!*
35
-
//check if i is a prime number
35
+
//ověří, zda i je prvočíslo
36
36
for (let j =2; j < i; j++) {
37
-
if (i % j ==0) continuenextPrime;
37
+
if (i % j ==0) continuedalšíPrvočíslo;
38
38
}
39
39
*/!*
40
40
@@ -43,20 +43,20 @@ function showPrimes(n) {
43
43
}
44
44
```
45
45
46
-
The better variant, with a factored out function `isPrime`:
46
+
Lepší varianta s vyjmutou funkcí `jePrvočíslo`:
47
47
48
48
49
49
```js
50
-
functionshowPrimes(n) {
50
+
functionzobrazPrvočísla(n) {
51
51
52
52
for (let i =2; i < n; i++) {
53
-
*!*if (!isPrime(i)) continue;*/!*
53
+
*!*if (!jePrvočíslo(i)) continue;*/!*
54
54
55
55
alert(i);
56
56
}
57
57
}
58
58
59
-
functionisPrime(n) {
59
+
functionjePrvočíslo(n) {
60
60
for (let i =2; i < n; i++) {
61
61
if (n % i ==0) returnfalse;
62
62
}
@@ -65,116 +65,116 @@ function isPrime(n) {
65
65
}
66
66
```
67
67
68
-
Now we can understand the code easily. The function itself becomes the comment. Such code is called *self-descriptive*.
68
+
Nyní kódu snadno porozumíme. Funkce sama o sobě se stává komentářem. Takový kód se nazývá *sebepopisující*.
69
69
70
-
### Recipe: create functions
70
+
### Recept: vytvářejte funkce
71
71
72
-
And if we have a long "code sheet" like this:
72
+
A máme-li dlouhý „kus kódu“, jako třeba:
73
73
74
74
```js
75
-
//here we add whiskey
75
+
//zde přidáme whisky
76
76
for(let i =0; i <10; i++) {
77
-
letdrop=getWhiskey();
78
-
smell(drop);
79
-
add(drop, glass);
77
+
letkapka=vezmiWhisky();
78
+
přičichni(kapka);
79
+
přidej(kapka, sklenice);
80
80
}
81
81
82
-
//here we add juice
82
+
//zde přidáme džus
83
83
for(let t =0; t <3; t++) {
84
-
lettomato=getTomato();
85
-
examine(tomato);
86
-
letjuice=press(tomato);
87
-
add(juice, glass);
84
+
letrajče=vezmiRajče();
85
+
prozkoumej(rajče);
86
+
letdžus=rozmačkej(rajče);
87
+
přidej(džus, sklenice);
88
88
}
89
89
90
90
// ...
91
91
```
92
92
93
-
Then it might be a better variant to refactor it into functions like:
93
+
pak může být lepší varianta jej přepsat do funkcí takto:
94
94
95
95
```js
96
-
addWhiskey(glass);
97
-
addJuice(glass);
96
+
přidejWhisky(sklenice);
97
+
přidejDžus(sklenice);
98
98
99
-
functionaddWhiskey(container) {
99
+
functionpřidejWhisky(nádoba) {
100
100
for(let i =0; i <10; i++) {
101
-
letdrop=getWhiskey();
101
+
letkapka=vezmiWhisky();
102
102
//...
103
103
}
104
104
}
105
105
106
-
functionaddJuice(container) {
106
+
functionpřidejDžus(nádoba) {
107
107
for(let t =0; t <3; t++) {
108
-
lettomato=getTomato();
108
+
letrajče=vezmiRajče();
109
109
//...
110
110
}
111
111
}
112
112
```
113
113
114
-
Once again, functions themselves tell what's going on. There's nothing to comment. And also the code structure is better when split. It's clear what every function does, what it takes and what it returns.
114
+
Opět funkce samy o sobě říkají, co se děje. Není tady co komentovat. I struktura kódu je lepší, když je kód rozdělený. Je jasné, co která funkce provádí, co přijímá a co vrací.
115
115
116
-
In reality, we can't totally avoid "explanatory" comments. There are complex algorithms. And there are smart "tweaks" for purposes of optimization. But generally we should try to keep the code simple and self-descriptive.
116
+
V realitě se nemůžeme „vysvětlujícím“ komentářům úplně vyhnout. Existují složité algoritmy a existují chytrá „vylepšení“ pro účely optimalizace. Obecně bychom se však měli snažit udržet kód jednoduchý a sebepopisující.
117
117
118
-
## Good comments
118
+
## Dobré komentáře
119
119
120
-
So, explanatory comments are usually bad. Which comments are good?
120
+
Vysvětlující komentáře jsou tedy obecně špatné. Jaké komentáře jsou dobré?
121
121
122
-
Describe the architecture
123
-
: Provide a high-level overview of components, how they interact, what's the control flow in various situations... In short -- the bird's eye view of the code. There's a special language[UML](http://wikipedia.org/wiki/Unified_Modeling_Language)to build high-level architecture diagrams explaining the code. Definitely worth studying.
122
+
Popis architektury
123
+
: Poskytují vysokoúrovňový pohled na komponenty, jak spolu komunikují, jaký je řídicí tok v různých situacích... Stručně řečeno -- pohled na kód z ptačí perspektivy. Existuje i speciální jazyk[UML](http://wikipedia.org/wiki/Unified_Modeling_Language)určený k tvorbě diagramů na vysoké úrovni architektury, které popisují kód. Rozhodně má smysl si jej prostudovat.
124
124
125
-
Document function parameters and usage
126
-
: There's a special syntax [JSDoc](http://en.wikipedia.org/wiki/JSDoc)to document a function: usage, parameters, returned value.
125
+
Dokumentace parametrů a použití funkcí
126
+
: Existuje speciální syntaxe [JSDoc](http://en.wikipedia.org/wiki/JSDoc)pro dokumentaci funkcí: použití, parametry, návratová hodnota.
127
127
128
-
For instance:
128
+
Například:
129
129
```js
130
130
/**
131
-
* Returns x raised to the n-th power.
131
+
* Vrátí x umocněné na n-tou.
132
132
*
133
-
* @param{number}xThe number to raise.
134
-
* @param{number}nThe power, must be a natural number.
135
-
* @return{number} x raised to the n-th power.
133
+
* @param{number}xČíslo, které se má umocnit.
134
+
* @param{number}nExponent, musí být přirozené číslo.
135
+
* @return{number} x umocněné na n-tou.
136
136
*/
137
-
functionpow(x, n) {
137
+
functionmocnina(x, n) {
138
138
...
139
139
}
140
140
```
141
141
142
-
Such comments allow us to understand the purpose of the function and use it the right way without looking in its code.
142
+
Takové komentáře nám umožňují porozumět účelu funkce a používat ji správně, aniž bychom se dívali na její kód.
143
143
144
-
By the way, many editors like [WebStorm](https://www.jetbrains.com/webstorm/) can understand them as well and use them to provide autocomplete and some automatic code-checking.
144
+
Mimochodem i mnoho editorů, například [WebStorm](https://www.jetbrains.com/webstorm/), jim dokáže porozumět a používá je k našeptávání a automatické kontrole kódu.
145
145
146
-
Also, there are tools like [JSDoc 3](https://github.com/jsdoc/jsdoc) that can generate HTML-documentation from the comments. You can read more information about JSDoc at<https://jsdoc.app>.
146
+
Existují i nástroje jako [JSDoc 3](https://github.com/jsdoc/jsdoc), které umějí z těchto komentářů vygenerovat dokumentaci v HTML. Více informací o JSDoc si můžete přečíst na<https://jsdoc.app>.
147
147
148
-
Why is the task solved this way?
149
-
: What's written is important. But what's *not* written may be even more important to understand what's going on. Why is the task solved exactly this way? The code gives no answer.
148
+
Proč se tato úloha řeší zrovna takhle?
149
+
: To, co je psáno, je důležité. Ale to, co *není* psáno, může být ještě důležitější k pochopení toho, o co jde. Proč je tato úloha řešena právě tímto způsobem? Kód nám odpověď nedává.
150
150
151
-
If there are many ways to solve the task, why this one? Especially when it's not the most obvious one.
151
+
Existuje-li mnoho způsobů, jak tuto úlohu řešit, proč zrovna tento? Zvláště pokud to není zrovna nejzřejmější způsob.
152
152
153
-
Without such comments the following situation is possible:
154
-
1. You (or your colleague) open the code written some time ago, and see that it's "suboptimal".
155
-
2. You think: "How stupid I was then, and how much smarter I'm now", and rewrite using the "more obvious and correct" variant.
156
-
3. ...The urge to rewrite was good. But in the process you see that the "more obvious" solution is actually lacking. You even dimly remember why, because you already tried it long ago. You revert to the correct variant, but the time was wasted.
153
+
Bez takových komentářů může nastat následující situace:
154
+
1. Vy (nebo váš kolega) otevřete kód, napsaný před nějakou dobou, a vidíte, že je „neoptimální“.
155
+
2. Pomyslíte si: „To jsem byl tehdy ale hloupý, teď jsem o hodně chytřejší“, a přepíšete ho na „jasnější a korektnější“ variantu.
156
+
3. ...Potřeba přepsat kód byla dobrá. Ale po spuštění uvidíte, že „jasnější“ řešení je ve skutečnosti horší. Matně si vzpomenete proč, jelikož jste to kdysi už zkoušeli. Vrátíte kód na korektní variantu, ale byla to ztráta času.
157
157
158
-
Comments that explain the solution are very important. They help to continue development the right way.
158
+
Komentáře, které vysvětlují řešení, jsou velmi důležité, protože nám pomáhají vyvíjet správnou cestou.
159
159
160
-
Any subtle features of the code? Where they are used?
161
-
: If the code has anything subtle and counter-intuitive, it's definitely worth commenting.
160
+
Jsou v kódu nějaké finty? Proč jsou použity?
161
+
: Obsahuje-li kód cokoli promyšleného a neintuitivního, má rozhodně smysl jej komentovat.
162
162
163
-
## Summary
163
+
## Shrnutí
164
164
165
-
An important sign of a good developer is comments: their presence and even their absence.
165
+
Komentáře jsou důležitým znakem dobrého vývojáře: jejich přítomnost, ale i jejich absence.
166
166
167
-
Good comments allow us to maintain the code well, come back to it after a delay and use it more effectively.
167
+
Dobré komentáře nám umožňují kód dobře udržovat, později se k němu vracet a efektivněji jej využívat.
168
168
169
-
**Comment this:**
169
+
**Komentujte toto:**
170
170
171
-
-Overall architecture, high-level view.
172
-
-Function usage.
173
-
-Important solutions, especially when not immediately obvious.
171
+
-Celkovou architekturu, pohled z vysoké úrovně.
172
+
-Používání funkcí.
173
+
-Důležitá řešení, zvláště pokud nejsou jasná na první pohled.
174
174
175
-
**Avoid comments:**
175
+
**Zdržte se komentářů:**
176
176
177
-
-That tell "how code works" and "what it does".
178
-
-Put them in only if it's impossible to make the code so simple and self-descriptive that it doesn't require them.
177
+
-Které vysvětlují „jak kód funguje“ a „co dělá“.
178
+
-Vkládejte je jen tehdy, když není možné udržet kód natolik jednoduchý a sebepopisující, že je nevyžaduje.
179
179
180
-
Comments are also used for auto-documenting tools like JSDoc3: they read them and generate HTML-docs (or docs in another format).
180
+
Komentáře se také používají pro nástroje automatické dokumentace jako JSDoc3, které je načtou a vygenerují z nich dokumentaci v HTML (nebo v jakémkoli jiném formátu).
0 commit comments