|
41 | 41 |
|
42 | 42 | ### Последващия списък изтъква практиките, които използвам в всичкия ми код, на който съм оригинален автор; участия в проекти, които съм създал трябва да следват тези напътствия.
|
43 | 43 |
|
44 |
| -### Нямам намерение да налагам моите предпочитания за стил на кода или проекти на други хора; ако има налие на съществуващ общ стил, той трябва да се спазва. |
| 44 | +### Нямам намерение да налагам моите предпочитания за стил на кода или проекти на други хора; ако има наличие на съществуващ общ стил, той трябва да се спазва. |
45 | 45 |
|
46 |
| -> ### "Спорове за стилове са безмислени. Трябва да има ръководство за стила и трябва да го спазвате" |
| 46 | +> ### "Спорове за стилове са безсмислени. Трябва да има ръководство за стила и трябва да го спазвате" |
47 | 47 | >_Rebecca_ _Murphey_
|
48 | 48 |
|
49 | 49 |
|
|
112 | 112 |
|
113 | 113 | ### Тестова база
|
114 | 114 |
|
115 |
| -Проектите трябва да включват някаква форма на единица, референция, имплементация или фунционално тестване. Демострационни случаи на употреба НЕ СЕ КВАЛИФИЦИРАТ като "тестове". По-долу има списък със тестови рамки, нито една от които не е одобрена повече от другата. |
| 115 | +Проектите трябва да включват някаква форма на единица, референция, имплементация или функционално тестване. Демострационни случаи на употреба НЕ СЕ КВАЛИФИЦИРАТ като "тестове". По-долу има списък със тестови рамки, нито една от които не е одобрена повече от другата. |
116 | 116 |
|
117 | 117 | * [QUnit](http://github.com/jquery/qunit)
|
118 | 118 | * [Jasmine](https://github.com/pivotal/jasmine)
|
|
158 | 158 | - Усилена консистенция
|
159 | 159 | - Премахване на интервал в края на реда
|
160 | 160 | - Премахване на празни редове
|
161 |
| - - Комитите и разликите в кода само по-лесни за четене |
| 161 | + - Комитите и разликите в кода са по-лесни за четене |
162 | 162 | - Използвайте [Editorconfig](http://editorconfig.org/) когато е възможно. Поддържа повечето IDEs и обработва повечето настройки за празно пространство.
|
163 | 163 |
|
164 | 164 | 2. <a name="spacing">Красив синтаксис</a>
|
|
168 | 168 |
|
169 | 169 | ```javascript
|
170 | 170 |
|
171 |
| - // if/else/for/while/try always have spaces, braces and span multiple lines |
172 | 171 | // if/else/for/while/try винаги имат интервали между тях, къдравите скоби и разделението между секциите са на множество редове
|
173 | 172 | // това подобрява четимостта
|
174 | 173 |
|
|
246 | 245 | // 2.B.1.2
|
247 | 246 | // Използването на само един `var` на всеки обхват (функция) или по един `var` на всяка променлива,
|
248 | 247 | // повишава четимостта и пази вашия списък на декларации от безредие.
|
249 |
| - // Използването по един `var` на всяка променлива можете да котролирате по-добре версиите |
| 248 | + // Използването по един `var` на всяка променлива можете да контролирате по-добре версиите |
250 | 249 | // и освен това улеснява разместването на редовете.
|
251 | 250 | // Един `var` на всеки обхват улеснява намирането на недекларирани променливи,
|
252 | 251 | // които могат да станат подразбиращи се глобални.
|
253 |
| - // Изберете по-добри подход за вашия проект и никога не го смесвайте |
| 252 | + // Изберете по-добрия подход за вашия проект и никога не го смесвайте |
254 | 253 |
|
255 | 254 | // Лош пример
|
256 | 255 | var foo = "",
|
|
294 | 293 | }
|
295 | 294 |
|
296 | 295 | // 2.B.1.4
|
297 |
| - // 'const' и `let`, от ECMAScript 6, също трябва да са в горната част на тегния обхват (блоков). |
| 296 | + // 'const' и `let`, от ECMAScript 6, също трябва да са в горната част на техния обхват (блоков). |
298 | 297 |
|
299 | 298 | // Лош пример
|
300 | 299 | function foo() {
|
|
336 | 335 | // Използване
|
337 | 336 | square( 10 );
|
338 | 337 |
|
339 |
| - // Много измислен стил на преминаване на параметри |
| 338 | + // Много измислен стил на подаване на параметри |
340 | 339 | function square( number, callback ) {
|
341 | 340 | callback( number * number );
|
342 | 341 | }
|
343 | 342 |
|
344 | 343 | square( 10, function( square ) {
|
345 |
| - // повикани изрази |
| 344 | + // изрази с обратно извикване |
346 | 345 | });
|
347 | 346 |
|
348 | 347 |
|
|
381 | 380 | ```
|
382 | 381 |
|
383 | 382 |
|
384 |
| - C. Exceptions, Slight Deviations |
| 383 | + C. Изключения, леки отклонения |
385 | 384 |
|
386 | 385 | ```javascript
|
387 | 386 |
|
|
405 | 404 | // Единичен низ като параметър, също без интервал
|
406 | 405 | foo("bar");
|
407 | 406 |
|
408 |
| - // Вътрешни скоби, също без интервал |
| 407 | + // Съдържание във вътрешни скоби, също без интервал |
409 | 408 | if ( !("foo" in obj) ) {
|
410 | 409 | obj = (obj.bar || defaults).baz;
|
411 | 410 | }
|
|
415 | 414 | D. Консистентността винаги побеждава
|
416 | 415 |
|
417 | 416 | В секции 2.A-2.C, правилата за интервали са изложени като препоръка с по-проста и по-извисена цел: консистентност.
|
418 |
| - Важно е да се отбележи, че предпочитанията за форматиране, такива като "вътрешно пространстро", трябва да се считат за незадължителни, но само един стил трябва да съществува из целия код на вашия проект. |
| 417 | + Важно е да се отбележи, че предпочитанията за форматиране, такива като "вътрешно пространство", трябва да се считат за незадължителни, но само един стил трябва да съществува из целия код на вашия проект. |
419 | 418 |
|
420 | 419 | ```javascript
|
421 | 420 |
|
|
447 | 446 |
|
448 | 447 | F. Край на Редовете и Празни Редове
|
449 | 448 |
|
450 |
| - Пространствата могат да развалят разликите да направят промените невъзможни за четене. Помислете да включите "pre-commit" кука, която да премахне автоматично пространството на края на реда и празните пространства на редовете. |
| 449 | + Пространствата могат да развалят разликите и да направят промените невъзможни за четене. Помислете да включите "pre-commit" кука, която да премахне автоматично пространството на края на реда и празните пространства на редовете. |
451 | 450 |
|
452 | 451 |
|
453 | 452 | 3. <a name="type">Type Checking (Courtesy jQuery Core Style Guidelines)</a>
|
|
528 | 527 | ...
|
529 | 528 |
|
530 | 529 | // Някъде по-късно във вашия код, трябва да обновите `foo`
|
531 |
| - // с ново стойност взета от елемента 'input' |
| 530 | + // с нова стойност взета от елемента 'input' |
532 | 531 |
|
533 | 532 | foo = document.getElementById("foo-input").value;
|
534 | 533 |
|
535 | 534 | // Ако сега тествате 'typeof foo`, резултатът ще бъде 'string'
|
536 |
| - // Това означава, че ако имате локига която тества 'foo' като тази: |
| 535 | + // Това означава, че ако имате логика, която тества 'foo' като тази: |
537 | 536 | if ( foo === 1 ) {
|
538 | 537 |
|
539 | 538 | importantTask();
|
|
544 | 543 |
|
545 | 544 | // 3.B.1.2
|
546 | 545 |
|
547 |
| - // Можете да избегнете проблеми като използвате умно конрвертиране в унарните оператори + и -: |
| 546 | + // Можете да избегнете проблеми като използвате умно конвертиране в унарните оператори + и -: |
548 | 547 |
|
549 | 548 | foo = +document.getElementById("foo-input").value;
|
550 |
| - // ^ унарния + ще преобразува десния си операнд в тип 'number' |
| 549 | + // ^ унарния оператор + ще преобразува десния си операнд в тип 'number' |
551 | 550 |
|
552 | 551 | // typeof foo;
|
553 | 552 | // "number"
|
|
561 | 560 | // `importantTask()` ще бъде извикана
|
562 | 561 | ```
|
563 | 562 |
|
564 |
| - Here are some common cases along with coercions: |
| 563 | + Ето няколко често срещани примера за прехвърляне на типове: |
565 | 564 |
|
566 | 565 |
|
567 | 566 | ```javascript
|
|
672 | 671 |
|
673 | 672 | num >>> 0;
|
674 | 673 |
|
675 |
| - // All result in 2 |
| 674 | + // Във всички случаи резултатът е равен на 2 |
676 | 675 |
|
677 | 676 |
|
678 | 677 | // Помнете, че отрицателните числа ще бъдат обработени различно ...
|
|
687 | 686 |
|
688 | 687 | neg >> 0;
|
689 | 688 |
|
690 |
| - // Всичко са равни на -2 |
| 689 | + // Във всички случаи резултатът е равен на -2 |
691 | 690 | // Въпреки че при...
|
692 | 691 |
|
693 | 692 | neg >>> 0;
|
|
726 | 725 | // 4.1.3
|
727 | 726 | // Проверете дали низа не е празен,
|
728 | 727 | // вместо:
|
729 |
| -
|
730 | 728 | if ( string !== "" ) ...
|
731 | 729 |
|
732 | 730 | // ...проверявайте за вярност, по този начин:
|
|
747 | 745 | // вместо:
|
748 | 746 | if ( foo === true ) ...
|
749 | 747 |
|
750 |
| - // ...проверявайте, възползвайки се от вградените възможности: |
| 748 | + // ...проверете, възползвайки се от вградените възможности: |
751 | 749 | if ( foo ) ...
|
752 | 750 |
|
753 | 751 |
|
|
766 | 764 |
|
767 | 765 |
|
768 | 766 | // 4.1.7
|
769 |
| - // Когато проверявате дали null или undefined, но НЕ false, "" или 0, |
| 767 | + // Когато проверявате дали е null или undefined, но НЕ Е false, "" или 0, |
770 | 768 | // вместо това:
|
771 | 769 | if ( foo === null || foo === undefined ) ...
|
772 | 770 |
|
773 | 771 | // ...използвайте оператора ==:
|
774 | 772 | if ( foo == null ) ...
|
775 | 773 |
|
776 | 774 | // Помнете, че използвайки оператора == с `null` важи И ЗА ДВЕТЕ `null` и `undefined`
|
777 |
| - // но не `false '," "или 0 |
| 775 | + // но не `false ', "" или 0 |
778 | 776 | null == undefined
|
779 | 777 |
|
780 | 778 | ```
|
781 |
| - Винаги проверявайте за най-добрия и точен резултат - горното е ръководство, не догма. |
| 779 | + ВИНАГИ проверявайте за най-добрия и точен резултат - горното е ръководство, не догма. |
782 | 780 |
|
783 | 781 | ```javascript
|
784 | 782 |
|
|
849 | 847 |
|
850 | 848 | // Други декларации
|
851 | 849 |
|
852 |
| - // добавамя нашия модъл към глобалния обект |
| 850 | + // добавяме нашия модул към глобалния обект |
853 | 851 | global.Module = Module;
|
854 | 852 |
|
855 | 853 | })( this );
|
|
985 | 983 |
|
986 | 984 | B. Лица на `this`
|
987 | 985 |
|
988 |
| - Извън общоизвестните случаи на `call` и `apply`, винаги избирайте `.bind( this )` или фунционалния му еквивалент, за създаване на дефиниция `BoundFunction` за по-късно извикване. Създаването на псевдоним е в краян случай, ако други решения не са подходящи. |
| 986 | + Извън общоизвестните случаи на `call` и `apply`, винаги избирайте `.bind( this )` или фунционалния му еквивалент, за създаване на дефиниция `BoundFunction` за по-късно извикване. Създаването на псевдоним е в краен случай, ако други решения не са подходящи. |
989 | 987 |
|
990 | 988 | ```javascript
|
991 | 989 |
|
|
1140 | 1138 |
|
1141 | 1139 | 7. <a name="misc">Разни</a>
|
1142 | 1140 |
|
1143 |
| - Този раздел ще служи за илюстриране на идеи и концепции, които не трябва да се считат за догма, вместо това съществува за да даде под съмнение практиките в опит да се намери по-добри начини за изпълнение, често срещани JavaScript задачи. |
| 1141 | + Този раздел ще служи за илюстриране на идеи и концепции, които не трябва да се считат за догма, вместо това съществува за да даде под съмнение практиките в опит да се намери по-добри начини за изпълнение, на често срещани JavaScript задачи. |
1144 | 1142 |
|
1145 | 1143 | A. Използването на `switch` трябва да се избягва, тъй като съвременния метод за отстраняване на грешки ще скрие повикванията на функции, които го използват.
|
1146 | 1144 |
|
1147 | 1145 | Изглежда че последните версии на браузърите Firefox и Chrome имат значителни подобрения в работата на функциите, които използват `switch`.
|
1148 | 1146 | http://jsperf.com/switch-vs-object-literal-vs-module
|
1149 | 1147 |
|
1150 |
| - Забележими подобрения могат да се забележат също и тук: |
| 1148 | + Забележими подобрения могат да се видят също и тук: |
1151 | 1149 | https://github.com/rwldrn/idiomatic.js/issues/13
|
1152 | 1150 |
|
1153 | 1151 | ```javascript
|
|
1181 | 1179 | return [ "Alpha", arguments.length ];
|
1182 | 1180 | },
|
1183 | 1181 | beta: function() {
|
1184 |
| - // изрази |
| 1182 | + // изрази |
1185 | 1183 | // връщане
|
1186 | 1184 | return [ "Beta", arguments.length ];
|
1187 | 1185 | },
|
|
1281 | 1279 |
|
1282 | 1280 | 8. <a name="native">"Родни" и "Чужди" обекти</a>
|
1283 | 1281 |
|
1284 |
| - The basic principle here is: |
| 1282 | + Основния принципт тук е: |
1285 | 1283 |
|
1286 | 1284 | ### Не правете глупости и всичко ще бъде наред.
|
1287 | 1285 |
|
1288 | 1286 | За да подсилите тази концепция, моля гледайте последващата презентация:
|
1289 | 1287 |
|
1290 |
| - #### “Everything is Permitted: Extending Built-ins” от Andrew Dupont (JSConf2011, Портланд, Орегон) |
| 1288 | + #### “Everything is Permitted: Extending Built-ins” от Андрю Дюпонт (JSConf2011, Портланд, Орегон) |
1291 | 1289 |
|
1292 | 1290 | https://www.youtube.com/watch?v=xL3xCO7CLNM
|
1293 | 1291 |
|
|
1301 | 1299 |
|
1302 | 1300 | 10. <a name="language">Код на Един Език </a>
|
1303 | 1301 |
|
1304 |
| - Programs should be written in one language, whatever that language may be, as dictated by the maintainer or maintainers. |
1305 | 1302 | Програмите трябва да бъдат написани на един език, независимо какъв е той, както се изисква от хората, които поддържат кода.
|
1306 | 1303 |
|
1307 | 1304 | ## Приложение
|
|
0 commit comments