ÐавÑÐ°Ð½Ð½Ñ Ð±ÐµÐ· мÑÑкÑÐ²Ð°Ð½Ð½Ñ â даÑемне, мÑÑкÑÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ· навÑÐ°Ð½Ð½Ñ â небезпеÑне.
ÐÑндзÑ-пÑогÑамÑÑÑи минÑлого викоÑиÑÑовÑвали ÑÑ Ñ Ð¸ÑÑоÑÑ, Ñоб загоÑÑÑиÑи ÑозÑм ÑÐ¸Ñ , Ñ Ñо бÑде пÑдÑÑимÑваÑи ÑÑ Ð½Ñй код.
ÒÑÑÑ, Ñо пеÑевÑÑÑÑÑÑ ÐºÐ¾Ð´, ÑÑкаÑÑÑ ÑÑ Ñ ÑеÑÑÐ¾Ð²Ð¸Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½ÑÑ .
ÐоÑаÑкÑвÑÑ ÑаÑом викоÑиÑÑовÑÑÑÑ ÑÑ Ð½Ð°Ð²ÑÑÑ ÐºÑаÑе за нÑндзÑ-пÑогÑамÑÑÑÑв.
Уважно пеÑеÑиÑайÑе ÑÑ Ñ Ð¸ÑÑоÑÑ Ð¹ виÑÑÑÑÑÑ, Ñ Ñо ви Ñ â нÑндзÑ, поÑаÑкÑвеÑÑ, Ñи може ÒÑÑÑ Ð¿ÐµÑевÑÑки кодÑ?
ÐагаÑо ÑÐ¸Ñ , Ñ Ñо намагавÑÑ Ð¿ÑÑи ÑлÑÑ Ð¾Ð¼ нÑндзÑ. Ðало ÑÐ¸Ñ , ÐºÐ¾Ð¼Ñ Ñе вдалоÑÑ.
СÑиÑлÑÑÑÑ â ÑеÑÑÑа ÑаланÑÑ
ÐиÑÑÑÑ Ñкомога коÑоÑÑий код. ÐокажÑÑÑ, наÑкÑлÑки ви ÑозÑмнÑ.
ÐÐµÑ Ð°Ð¹ неоÑÐµÐ²Ð¸Ð´Ð½Ñ Ð¾ÑобливоÑÑÑ Ð¼Ð¾Ð²Ð¸ напÑавлÑÑÑÑ Ð²Ð°Ñ.
ÐапÑиклад, ÑозглÑнемо заÑÑоÑÑÐ²Ð°Ð½Ð½Ñ ÑеÑнаÑного опеÑаÑоÑа '?':
// взÑÑо з добÑе вÑÐ´Ð¾Ð¼Ð¾Ñ javascript бÑблÑоÑеки
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
ÐÑÑÑо, ÑпÑавдÑ? ЯкÑо ви напиÑеÑе ÑоÑÑ Ð¿Ð¾Ð´Ñбне, Ñо пÑогÑамÑÑÑ, Ñкий наÑÑапиÑÑ Ð½Ð° Ñей ÑÑдок Ñ Ð½Ð°Ð¼Ð°Ð³Ð°ÑимеÑÑÑÑ Ð·ÑозÑмÑÑи, Ñке ж знаÑÐµÐ½Ð½Ñ Ð¼Ð°Ñ i, пÑÐ·Ð½Ð°Ñ Ð½ÐµÐ°Ð±Ð¸Ñкий дзен. Ð, вÑеÑÑÑ-ÑеÑÑ, пÑийде до Ð²Ð°Ñ Ð·Ð° пÑоÑвÑÑленнÑм.
СкажÑÑÑ Ð¹Ð¾Ð¼Ñ, Ñо коÑоÑÑе â Ñе завжди кÑаÑе. ÐопоможÑÑÑ Ð¹Ð¾Ð¼Ñ ÑÑаÑи на ÑлÑÑ Ð½ÑндзÑ.
ÐднолÑÑеÑÐ½Ñ Ð·Ð¼ÑннÑ
Ðао безÑловеÑне. ÐмâÑ, Ñке можна назваÑи, не Ñ Ð¿Ð¾ÑÑÑйним ÑмâÑм.
Ще один ÑпоÑÑб пиÑаÑи ÑÑиÑлий код â викоÑиÑÑовÑваÑи однолÑÑеÑÐ½Ñ Ð·Ð¼ÑннÑ. ÐапÑиклад: a, b або c.
ÐоÑоÑка змÑнна Ð·Ð½Ð¸ÐºÐ°Ñ Ð² кодÑ, наÑе нÑÐ½Ð´Ð·Ñ Ð² лÑÑÑ. ÐÑÑ
Ñо не зможе знайÑи ÑÑ Ð½Ð°Ð²ÑÑÑ ÑеÑез âпоÑÑкâ в ÑедакÑоÑÑ. Рбодай ÑÑ Ð·Ð½Ð°Ð¹Ð´ÑÑÑ, вони не зможÑÑÑ âÑозÑиÑÑÑваÑиâ за Ñо Ñаме вÑдповÑдаÑÑÑ Ð·Ð¼ÑÐ½Ð½Ñ a Ñи b.
Ðле Ñ Ð¾Ð´Ð¸Ð½ винÑÑок Ñз пÑавил. СпÑавжнÑй нÑÐ½Ð´Ð·Ñ Ð½Ñколи не викоÑиÑÑовÑваÑиме i Ñк лÑÑилÑник в ÑÐ¸ÐºÐ»Ñ "for". Ðе завгодно, ÑÑлÑки не ÑÑÑ! ÐзиÑнÑÑÑÑÑ â Ñ Ð±Ð°Ð³Ð°Ñо ÑнÑиÑ
екзоÑиÑниÑ
лÑÑеÑ. ÐапÑиклад, x або y.
ÐкзоÑиÑна змÑнна в ÑÐ¾Ð»Ñ Ð»ÑÑилÑника оÑобливо доÑеÑна, коли ÑÑло ÑÐ¸ÐºÐ»Ñ Ð·Ð°Ð¹Ð¼Ð°Ñ Ð¾Ð´Ð½Ñ-Ð´Ð²Ñ ÑÑоÑÑнки (Ñим бÑлÑÑе, Ñо кÑаÑе). У ÑÐ°ÐºÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ ÑÑ, Ñ
Ñо занÑÑиÑÑÑÑ Ð³Ð»Ð¸Ð±Ð¾ÐºÐ¾ в код ÑиклÑ, не зможÑÑÑ Ñвидко здогадаÑиÑÑ, Ñо змÑнна x наÑпÑÐ°Ð²Ð´Ñ Ñ Ð»ÑÑилÑником.
ÐикоÑиÑÑовÑйÑе абÑевÑаÑÑÑи
ЯкÑо пÑавила, вÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð²Ð°ÑÐ¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ñ, не дозволÑÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи однолÑÑеÑÐ½Ñ Ð·Ð¼ÑÐ½Ð½Ñ Ð°Ð±Ð¾ абÑÑÑакÑÐ½Ñ Ñмена, ÑÐ¾Ð´Ñ ÑкоÑоÑÑйÑе ÑÑ .
ÐапÑиклад:
listâlst.userAgentâua.browserâbrsr.- â¦ÑоÑо.
ТÑлÑки обÑанÑ, Ñо маÑÑÑ Ð´Ð¾Ð±Ñе ÑÐ¾Ð·Ð²Ð¸Ð½ÐµÐ½Ñ ÑнÑÑÑÑÑÑ, зможÑÑÑ Ð·ÑозÑмÑÑи ÑÐ°ÐºÑ Ñмена. ÐамагайÑеÑÑ ÑкоÑоÑÑваÑи вÑе. ТÑлÑки гÑÐ´Ð½Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð¼Ð°Ñи ÑеÑÑÑ Ð¿ÑдÑÑимÑваÑи Ð²Ð°Ñ ÐºÐ¾Ð´.
ÐÑдÑÑе абÑÑÑакÑними
Ðеликий квадÑÐ°Ñ Ð½Ðµ Ð¼Ð°Ñ ÐºÑÑÑв,
Ðеликий глек довго лÑпиÑÑÑÑ,
Ðеликий звÑк не можна поÑÑÑи,
Ðеликий обÑаз неозоÑий.
ÐбиÑаÑÑи ÑмâÑ, намагайÑеÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи найбÑлÑÑ Ð°Ð±ÑÑÑакÑне Ñлово. ÐÑикладом може бÑÑи obj, data, value, item, elem ÑоÑо.
-
dataÑ ÑдеалÑним ваÑÑанÑом Ð´Ð»Ñ ÑÐ¼ÐµÐ½Ñ Ð·Ð¼ÑнноÑ. ÐикоÑиÑÑовÑйÑе його вÑÑди, де можеÑе. Ð ÑпÑавдÑ, кожна змÑнна Ð¼Ð°Ñ Ð´Ð°Ð½Ñ, вÑÑно?Ð Ñо ÑобиÑи, ÑкÑо ÑмâÑ
dataвже зайнÑÑе? СпÑобÑйÑеvalueâ воно Ñакож ÑнÑвеÑÑалÑне. ÐÑеÑÑÑ-ÑеÑÑ, кожна змÑнна набÑÐ²Ð°Ñ ÑкеÑÑ Ð·Ð½Ð°ÑеннÑ. -
ÐобиÑайÑе ÑмâÑ Ð·Ð¼Ñнним згÑдно з ÑÑ Ð½Ñм Ñипом:
str,numâ¦Ð¡Ð¿ÑобÑйÑе. Той, Ñо Ñойно ÑÑав на ÑлÑÑ Ð½ÑндзÑ, може заÑÑмнÑваÑиÑÑ Ñи дÑйÑно ÑÐ°ÐºÑ Ñмена коÑиÑнÑ. Ðвжеж!
Так, ÑмâÑ Ð·Ð¼ÑÐ½Ð½Ð¾Ñ Ð´ÐµÑо ознаÑаÑ. Це Ð´Ð¾Ð¿Ð¾Ð¼Ð°Ð³Ð°Ñ Ð·ÑозÑмÑÑи, Ñо ми викоÑиÑÑовÑÑмо: ÑÑдок, ÑиÑло, Ñи ÑоÑÑ Ñе. ÐÑоÑе коли ÑÑоÑÐ¾Ð½Ð½Ñ Ð»Ñди намагаÑимÑÑÑÑÑ Ð·ÑозÑмÑÑи код, вони бÑдÑÑÑ Ð·Ð´Ð¸Ð²Ð¾Ð²Ð°Ð½Ñ, Ñо ÑнÑоÑмаÑÑÑ Ð¿Ñо Ñе, Ñо Ñаме мÑÑÑиÑÑ Ð·Ð¼Ñнна, вÑдÑÑÑнÑ. У ÑезÑлÑÑаÑÑ Ð²Ð¾Ð½Ð¸ не зможÑÑÑ Ð·Ð¼ÑниÑи Ð²Ð°Ñ Ð´Ð¾Ð±Ñе обмÑÑкований код.
Тип змÑÐ½Ð½Ð¾Ñ Ð´Ð¾ÑиÑÑ Ð»ÐµÐ³ÐºÐ¾ знайÑи пÑд ÑÐ°Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑ. Ðле Ñо ознаÑÐ°Ñ ÑÑ ÑмâÑ? Який Ñаме ÑÑдок/ÑиÑло вона збеÑÑгаÑ?
Ðодного ÑанÑÑ Ð´ÑзнаÑиÑÑ Ð¿Ñо Ñе без ÑÑÐ¸Ð²Ð°Ð»Ð¾Ñ Ð¼ÐµÐ´Ð¸ÑаÑÑÑ!
-
Ðле Ñо ÑобиÑи, коли й ÑÐ°ÐºÑ Ñмена ÑкÑнÑилиÑÑ? ÐÑоÑÑо додайÑе ÑиÑло:
data1, item2, elem5â¦
ÐеÑевÑÑка Ñваги
ТÑлÑки дÑже Ñважний пÑогÑамÑÑÑ Ð¿Ð¾Ð²Ð¸Ð½ÐµÐ½ маÑи ÑÐ°Ð½Ñ Ð·ÑозÑмÑÑи Ð²Ð°Ñ ÐºÐ¾Ð´. ÐÑоÑе Ñк Ñе пеÑевÑÑиÑи?
Ðдин Ð·Ñ ÑпоÑобÑв â викоÑиÑÑÐ°Ð½Ð½Ñ ÑÑ
ожиÑ
Ñмен змÑнниÑ
, напÑиклад date Ñ data.
ÐмÑÑÑйÑе ÑÑ Ð²ÑÑди, де Ñе можливо.
Швидко пÑоÑиÑаÑи Ñакий код неможливо. Ð ÑкÑо ÑÑавÑÑ Ñ Ð¸Ð±Ð¾Ð´ÑÑк⦠Ðммм⦠Це надовго, ÑÐ°Ñ Ð²Ð¸Ð¿Ð¸Ñи Ñаке.
ХиÑÑомÑдÑÑ ÑинонÑми
ÐÑÑина, Ñка може бÑÑи виÑажена Ñловами, не Ñ Ð¿Ñавдива ÑÑÑина. ÐмâÑ, Ñке може бÑÑи названо, не Ñ Ð¿Ñавдиве ÑмâÑ.
ÐикоÑиÑÑÐ°Ð½Ð½Ñ ÑÑ Ð¾Ð¶Ð¸Ñ Ñмен Ð´Ð»Ñ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ñ ÑеÑей зÑобиÑÑ Ð¶Ð¸ÑÑÑ ÑÑкавÑÑим Ñ Ð¿ÑодемонÑÑÑÑÑ ÑÑÐ²ÐµÐ½Ñ Ð²Ð°ÑÐ¾Ñ ÐºÑеаÑивноÑÑÑ.
ÐапÑиклад, ÑозглÑнемо пÑеÑÑкÑи ÑÑнкÑÑй. ЯкÑо ÑÑнкÑÑÑ Ð²Ð¸Ð²Ð¾Ð´Ð¸ÑÑ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð° екÑан â поÑнÑÑÑ ÑÑ ÑмâÑ Ð· displayâ¦, Ñк Ñо displayMessage. Ð Ð´Ð»Ñ ÑнÑÐ¾Ñ ÑÑнкÑÑÑ, Ñо показÑваÑиме на екÑÐ°Ð½Ñ Ñе ÑоÑÑ (ÑкажÑмо, ÑмâÑ ÐºÐ¾ÑиÑÑÑваÑа), поÑнÑÑÑ ÑмâÑ Ð· show⦠(напÑиклад, showName).
ÐаÑÑкнÑÑÑ, Ñо Ñ Ð´ÐµÑка Ñонка вÑдмÑннÑÑÑÑ Ð¼Ñж Ñими ÑÑнкÑÑÑми, Ñ Ð¾Ñа наÑпÑÐ°Ð²Ð´Ñ ÑÑ Ð½ÐµÐ¼Ð°Ñ.
ÐомовÑеÑÑ Ð·Ñ ÑвоÑми нÑндзÑ-колегами, Ñо ÑкÑо Ðикола поÑÐ¸Ð½Ð°Ñ Ð½Ð°Ð·Ð¸Ð²Ð°Ñи ÑÑнкÑÑÑ, Ñо показÑÑÑÑ ÑоÑÑ, викоÑиÑÑовÑÑÑи display..., ÑÐ¾Ð´Ñ ÐеÑÑо може викоÑиÑÑовÑваÑи render.., а Ðанна â paint.... ÐаÑважÑе, наÑкÑлÑки ÑÑкавим Ñа ÑÑзноманÑÑним ÑÑав код.
Ð ÑÐµÐ¿ÐµÑ ÐºÐ¾Ñонний пÑийом!
ÐÐ»Ñ ÑÑнкÑÑй, Ñ ÑÐºÐ¸Ñ Ð´ÑйÑно Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ñ Ð²ÑдмÑнноÑÑÑ, викоÑиÑÑовÑйÑе однаковий пÑеÑÑкÑ!
ÐапÑиклад, ÑÑнкÑÑÑ printPage(page) викоÑиÑÑовÑваÑиме пÑинÑеÑ. Ð printText(text) виводиÑиме ÑекÑÑ Ð½Ð° екÑан. ÐеÑ
ай лÑди, Ñо неоÑвÑÑÐµÐ½Ñ Ñ Ð²Ð°ÑÐ¾Ð¼Ñ ÐºÐ¾Ð´Ñ, ÑозмÑÑковÑÑÑÑ Ñодо ÑÑ
Ð¾Ð¶Ð¾Ñ ÑÑнкÑÑÑ printMessage: âÐÑди бÑде виведено повÑдомленнÑ? Ðа пÑинÑÐµÑ Ñи на екÑан?â. ÐÑдÑÑе поÑлÑдовними, ÑÑнкÑÑÑ printMessage(message) повинна вивеÑÑи повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² нове вÑкно!
ÐикоÑиÑÑовÑйÑе Ñмена повÑоÑно
ÐÑи вÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾ÑÑдкÑ
зâÑвилиÑÑ Ñмена.
ÐÑкÑлÑки виникли Ñмена,
поÑÑÑбно знаÑи Ð¼ÐµÐ¶Ñ ÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑаннÑ.
СÑвоÑÑйÑе Ð½Ð¾Ð²Ñ Ð·Ð¼ÑÐ½Ð½Ñ ÑÑлÑки ÑодÑ, коли Ñе вкÑай Ð½ÐµÐ¾Ð±Ñ Ñдно.
ÐаÑомÑÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑйÑе наÑÐ²Ð½Ñ Ð·Ð¼ÑÐ½Ð½Ñ Ð¿Ð¾Ð²ÑоÑно. ÐÑоÑÑо запиÑÑйÑе в Ð½Ð¸Ñ Ð½Ð¾Ð²Ñ Ð·Ð½Ð°ÑеннÑ.
У ÑÑнкÑÑÑ Ð½Ð°Ð¼Ð°Ð³Ð°Ð¹ÑеÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи лиÑе змÑннÑ, Ñо бÑли пеÑÐµÐ´Ð°Ð½Ñ Ñк паÑамеÑÑи.
Це ÑÑÑÑÑво ÑÑкладниÑÑ ÑозÑмÑÐ½Ð½Ñ Ñого, Ñо Ñаме мÑÑÑиÑÑÑÑ Ð² змÑннÑй заÑаз, Ñ Ð·Ð²Ñдки воно Ñам ÑзÑлоÑÑ. ÐеÑÐ¾Ñ ÑÐ¸Ñ Ð´Ñй Ñ ÑозвиÑок ÑнÑÑÑÑÑÑ Ñа памâÑÑÑ Ð»Ñдини, коÑÑа ÑиÑÐ°Ñ Ð²Ð°Ñ ÐºÐ¾Ð´. ÐÑдина Ð·Ñ ÑÐ»Ð°Ð±ÐºÐ¾Ñ ÑнÑÑÑÑÑÑÑ Ð°Ð½Ð°Ð»ÑзÑваÑиме Ñакий код ÑÑдок за ÑÑдком Ñ ÑлÑдкÑваÑиме за змÑнами в ÐºÐ¾Ð¶Ð½Ð¾Ð¼Ñ Ð±Ð»Ð¾ÑÑ ÐºÐ¾Ð´Ñ.
ÐÑоÑÑнÑÑим ваÑÑанÑом Ñакого пÑÐ´Ñ Ð¾Ð´Ñ Ñ Ð½ÐµÐ¿Ð¾Ð¼ÑÑна (!) замÑна знаÑÐµÐ½Ð½Ñ Ð·Ð¼ÑÐ½Ð½Ð¾Ñ Ð½Ð° ÑоÑÑ Ð´Ñже ÑÑ Ð¾Ð¶Ðµ вÑеÑÐµÐ´Ð¸Ð½Ñ ÑÐ¸ÐºÐ»Ñ Ð°Ð±Ð¾ ÑÑнкÑÑÑ.
ÐапÑиклад:
function ninjaFunction(elem) {
// 20 ÑÑдкÑв кодÑ, Ñо викоÑиÑÑовÑÑÑÑ elem
elem = clone(elem);
// Ñе 20 ÑÑдкÑв, ÑÐºÑ ÑÐµÐ¿ÐµÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑ ÐºÐ»Ð¾Ð½ elem!
}
Ðолега-пÑогÑамÑÑÑ, Ñ Ñкого бÑде Ð±Ð°Ð¶Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑаÑи elem Ñ Ð´ÑÑгÑй ÑаÑÑÐ¸Ð½Ñ ÐºÐ¾Ð´Ñ, бÑде здивований⦠ТÑлÑки пÑд ÑÐ°Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ, пÑÑÐ»Ñ ÑозбоÑÑ ÐºÐ¾Ð´Ñ, вÑн зÑозÑмÑÑ, Ñо пÑаÑÑÑ Ð· клоном!
Таке ÑÑаплÑÑÑÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñ ÑаÑÑо. ÐбивÑий пÑийом, навÑÑÑ Ð¿ÑоÑи доÑвÑдÑÐµÐ½Ð¸Ñ Ð½ÑндзÑ.
ÐÑдкÑеÑÐ»ÐµÐ½Ð½Ñ â Ñе веÑело
СÑавÑе пÑдкÑеÑÐ»ÐµÐ½Ð½Ñ _ Ñа __ пеÑед Ñменами змÑнниÑ
. ÐапÑиклад, _name або __value. ÐÑаÑе бÑде, ÑкÑо ÑÑлÑки ви бÑдеÑе ÑозÑмÑÑи ÑÑ
Ð½Ñ Ð·Ð½Ð°ÑеннÑ. Ð Ñе кÑаÑе, Ñоб нÑÑкого знаÑÐµÐ½Ð½Ñ Ð½Ðµ бÑло зовÑÑм, додавайÑе ÑÑ
Ð·Ð°Ð´Ð»Ñ Ñозваги. Ðбо викоÑиÑÑовÑйÑе ÑÑÐ·Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð² ÑÑзниÑ
мÑÑÑÑÑ
.
Ðи вбиваÑÑе Ð´Ð²Ð¾Ñ Ð·Ð°Ð¹ÑÑв одним ÑÑÑикеном. Ðо-пеÑÑе, код ÑÑÐ°Ñ Ð´Ð¾Ð²Ñим Ñ Ð¼ÐµÐ½Ñ Ð·ÑозÑмÑлим, Ñ, по-дÑÑге, колега-пÑогÑамÑÑÑ Ð·Ð¼Ð¾Ð¶Ðµ виÑÑаÑиÑи багаÑо ÑаÑÑ Ð·âÑÑовÑÑÑи ÑакÑалÑне знаÑÐµÐ½Ð½Ñ Ð²Ð°Ñого пÑдкÑеÑленнÑ.
ÐÑовоÑний нÑÐ½Ð´Ð·Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑ Ð¿ÑдкÑеÑÐ»ÐµÐ½Ð½Ñ Ð² однÑй ÑаÑÑÐ¸Ð½Ñ ÐºÐ¾Ð´Ñ Ð¹ ÑÐ½Ð¸ÐºÐ°Ñ ÑÑ Ð² ÑнÑÑй. Це ÑобиÑÑ ÐºÐ¾Ð´ Ñе бÑлÑÑ Ð²Ñазливим Ñ Ð¿ÑдвиÑÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ Ð²Ð¸Ð½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº Ñ Ð¼Ð°Ð¹Ð±ÑÑнÑомÑ.
ÐокажÑÑÑ ÑÐ²Ð¾Ñ Ð»Ñбов
ÐеÑ
ай ÑÑÑ Ð±Ð°ÑаÑÑ, наÑкÑлÑки велиÑÐ½Ñ Ð²Ð°ÑÑ ÑÑÑноÑÑÑ! ЧиÑÐ°Ñ Ð¾Ð±Ð¾Ð²âÑзково зÑадÑÑ Ñаким Ñменам, Ñк superElement, megaFrame Ñа niceItem.
СпÑавдÑ, з одного бокÑ, деÑо вÑе ж Ñаки напиÑано: super.., mega.., nice... Ðле, з ÑнÑого Ð±Ð¾ÐºÑ â Ñе не поÑÑнÑÑ Ð½ÑÑого. Той, Ñ
Ñо ÑиÑаÑиме Ð²Ð°Ñ ÐºÐ¾Ð´, виÑÑаÑиÑÑ Ð½Ðµ Ð¾Ð´Ð½Ñ Ð³Ð¾Ð´Ð¸Ð½Ñ Ñвого оплаÑеного ÑобоÑого ÑаÑÑ Ð½Ð° медиÑаÑÑÑ Ñ Ð¿Ð¾ÑÑки пÑиÑ
ованого знаÑÐµÐ½Ð½Ñ ÑиÑ
ÑлÑв.
ÐеÑекÑиÑÑÑ Ð·Ð¾Ð²Ð½ÑÑнÑÑ Ð·Ð¼ÑнниÑ
Той, Ñо пеÑебÑÐ²Ð°Ñ Ð½Ð° ÑвÑÑлÑ, не може нÑÑого побаÑиÑи в ÑемÑÑвÑ. Той, Ñо пеÑебÑÐ²Ð°Ñ Ð² ÑемÑÑвÑ, побаÑиÑÑ Ð²Ñе, Ñо пеÑебÑÐ²Ð°Ñ Ð½Ð° ÑвÑÑлÑ.
ÐикоÑиÑÑовÑйÑе ÑÑ Ð¶ ÑÐ°Ð¼Ñ Ñмена змÑÐ½Ð½Ð¸Ñ Ñк вÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑнкÑÑÑ, Ñак Ñ Ð·Ð° ÑÑ Ð¼ÐµÐ¶Ð°Ð¼Ð¸. Це пÑоÑÑо. ÐÑÑÐºÐ¸Ñ Ð·ÑÑÐ¸Ð»Ñ Ð´Ð»Ñ Ð²Ð¸Ð³Ð°Ð´ÑÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ Ñмен.
let user = authenticateUser();
function render() {
let user = anotherValue();
...
...багаÑо ÑÑдкÑв...
...
... // <-- пÑогÑамÑÑÑ Ð·Ð°Ñ
оÑе викоÑиÑÑаÑи ÑÑÑ 'user' Ñ...
...
}
ÐÑогÑамÑÑÑи, Ñо ÑиÑаÑимÑÑÑ ÐºÐ¾Ð´ ÑÑнкÑÑÑ render, ймовÑÑно не помÑÑÑÑÑ, Ñо локалÑна змÑнна user пеÑекÑÐ¸Ð²Ð°Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑ.
Ð¢Ð¾Ð´Ñ Ð²Ð¾Ð½Ð¸ ÑпÑобÑÑÑÑ Ð¿ÑаÑÑваÑи з user Ñк з зовнÑÑнÑÐ¾Ñ Ð·Ð¼ÑнноÑ, Ñо Ð¼Ð°Ñ Ð¿Ð¾Ð²ÐµÑнÑÑи ÑезÑлÑÑÐ°Ñ authenticateUser()⦠ÐаÑÑка заÑ
лопнÑлаÑÑ! ÐÑивÑÑ, налагоджÑваÑÑâ¦
ÐобÑÑÐ½Ñ ÐµÑекÑи вÑÑди!
Ð ÑÑнкÑÑÑ, ÑÐºÑ Ð½Ð°ÑебÑо нÑÑого не змÑнÑÑÑÑ. ÐапÑиклад: isReady(), checkPermission(), findTags()⦠ÐÑипÑÑкаÑÑÑÑÑ, Ñо ÑÐ°ÐºÑ ÑÑнкÑÑÑ Ð²Ð¸ÐºÐ¾Ð½ÑÑÑÑ Ð¾Ð±ÑиÑÐ»ÐµÐ½Ð½Ñ Ñа повеÑÑаÑÑÑ ÑезÑлÑÑÐ°Ñ Ð±ÐµÐ· Ð²Ð¿Ð»Ð¸Ð²Ñ Ð½Ð° Ñе, Ñо мÑÑÑиÑÑÑÑ Ð·Ð° межами ÑÑнкÑÑÑ. ÐнÑими Ñловами, без âпобÑÑниÑ
еÑекÑÑвâ.
ÐÑйÑно гаÑним пÑийомом Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ñи âкоÑиÑнÑâ дÑÑ Ð´Ð¾ Ð½Ð¸Ñ , окÑÑм ÑÑ Ð½ÑÐ¾Ñ Ð¾ÑÐ½Ð¾Ð²Ð½Ð¾Ñ Ð·Ð°Ð´Ð°ÑÑ.
ÐиÑаз пÑиголомÑеного Ð¿Ð¾Ð´Ð¸Ð²Ñ Ð½Ð° облиÑÑÑ Ð²Ð°Ñого колеги, коли вÑн побаÑиÑÑ, Ñо ÑÑнкÑÑÑ Ð· ÑмâÑм is.., check.. Ñи find... ÑоÑÑ Ð·Ð¼ÑнÑÑ, неодмÑнно ÑозÑиÑиÑÑ Ð¼ÐµÐ¶Ñ Ð¹Ð¾Ð³Ð¾ ÑвÑдомоÑÑÑ.
ÐнÑим ÑпоÑобом здивÑваÑи Ñ Ð¿Ð¾Ð²ÐµÑÐ½ÐµÐ½Ð½Ñ Ð½ÐµÑÑандаÑÑного ÑезÑлÑÑаÑÑ.
ÐокажÑÑÑ ÑÐ²Ð¾Ñ Ð¾ÑигÑналÑне миÑленнÑ! ÐеÑ
ай виклик ÑÑнкÑÑÑ checkPermission повеÑне не true/false, а Ñкладний обâÑÐºÑ Ð· ÑезÑлÑÑаÑом пеÑевÑÑки.
ÐÑогÑамÑÑÑи, Ñо намагаÑимÑÑÑÑÑ Ð½Ð°Ð¿Ð¸ÑаÑи if (checkPermission(..)), бÑдÑÑÑ Ð´Ð¸Ð²ÑваÑиÑÑ, ÑÐ¾Ð¼Ñ Ð²Ð¾Ð½Ð¾ не пÑаÑÑÑ. СкажÑÑÑ Ñм: âÐивÑайÑе докÑменÑаÑÑÑ!â. РдайÑе Ñм поÑиÑаÑи ÑÑ ÑÑаÑÑÑ.
ÐогÑÑÐ½Ñ ÑÑнкÑÑÑ!
ÐÑÑне Ðао пÑонизÑÑ Ð¡Ð¾Ð±Ð¾Ñ Ð²Ñе.
Ðоно Ñ Ñ Ð¿ÑавоÑÑÑ, Ñ Ð»ÑвоÑÑÑ.
Ðе ÑÑеба обмежÑваÑи алгоÑиÑм ÑÑнкÑÑÑ Ð»Ð¸Ñе Ñим, Ñо повâÑзано з ÑÑ ÑмâÑм. ÐиÑлÑÑÑ ÑиÑÑе.
ÐапÑиклад, ÑÑнкÑÑÑ validateEmail(email) може (окÑÑм пеÑевÑÑки адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи на вÑдповÑднÑÑÑÑ Ð¿Ñавилам) показÑваÑи повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ Ñа пÑопонÑваÑи ввеÑÑи Ð½Ð¾Ð²Ñ Ð°Ð´ÑеÑÑ.
ÐодаÑÐºÐ¾Ð²Ñ Ð´ÑÑ Ð½Ðµ мÑÑÑÑÑ Ð±ÑÑи зÑозÑмÑлими з ÑмâÑ ÑÑнкÑÑÑ. СпÑавжнÑй нÑндзÑ-пÑогÑамÑÑÑ Ð·ÑобиÑÑ ÑÑ Ñакож неоÑевидними й в ÑÐ°Ð¼Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ.
ÐоÑÐ´Ð½Ð°Ð½Ð½Ñ Ð´ÐµÐºÑлÑÐºÐ¾Ñ Ð´Ñй в Ð¾Ð´Ð½Ñ Ð·Ð°Ñ Ð¸ÑÐ°Ñ Ð²Ð°Ñ ÐºÐ¾Ð´ вÑд повÑоÑного викоÑиÑÑаннÑ.
УÑвÑÑÑ ÑобÑ, Ñо ÑнÑий пÑогÑамÑÑÑ Ð·Ð°Ñ
оÑе ÑÑлÑки пеÑевÑÑиÑи адÑеÑÑ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи без Ð²Ð¸Ð²Ð¾Ð´Ñ Ð¶Ð¾Ð´Ð½Ð¸Ñ
повÑдомленÑ. ÐаÑа ÑÑнкÑÑÑ validateEmail(email) ÑобиÑÑ Ð¾Ð±Ð¸Ð´Ð²Ñ Ð´ÑÑ, ÑÐ¾Ð¼Ñ Ð½Ðµ пÑдÑйде йомÑ. ÐÑже, нÑÑ
Ñо не поÑÑÑбÑÑ Ð²Ð°Ñ Ð¿Ñд ÑÐ°Ñ Ð¼ÐµÐ´Ð¸ÑаÑÑÑ ÑозпиÑÑваннÑми Ñодо ÑÑÑÑ ÑÑнкÑÑÑ.
ÐÑдÑÑмки
ÐÑÑ âпоÑадиâ, зазнаÑÐµÐ½Ñ Ð²Ð¸Ñе, здобÑÑÑ Ð· ÑеалÑного кодÑ⦠ÐÐ½Ð¾Ð´Ñ Ð½Ð°Ð¿Ð¸Ñаного Ð´Ð¾Ð²Ð¾Ð»Ñ Ð´Ð¾ÑвÑдÑеними пÑогÑамÑÑÑами. Ðожливо, навÑÑÑ Ð´Ð¾ÑвÑдÑенÑÑими за Ð²Ð°Ñ ;)
- ÐоÑÑимÑйÑеÑÑ Ð´ÐµÑÐºÐ¸Ñ Ð· ÑÐ¸Ñ Ð¿Ð¾Ñад â Ñ Ñ Ð²Ð°ÑÐ¾Ð¼Ñ ÐºÐ¾Ð´Ñ Ð±Ñде повно неÑподÑванок.
- ÐоÑÑимÑйÑеÑÑ Ð±ÑлÑÑоÑÑÑ Ð· ÑÐ¸Ñ Ð¿Ð¾Ñад â Ñ Ð²Ð°Ñ ÐºÐ¾Ð´ бÑде дÑйÑно ваÑим; нÑÑ Ñо не Ð·Ð°Ñ Ð¾Ñе його ÑиÑаÑи, Ñим паÑе â змÑнÑваÑи.
- ÐоÑÑимÑйÑеÑÑ ÑÑÑÑ Ð¿Ð¾Ñад â Ñ Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑане неоÑÑненним ÑÑоком Ð´Ð»Ñ Ð¼Ð¾Ð»Ð¾Ð´Ð¸Ñ Ð¿ÑогÑамÑÑÑÑв, ÑÐºÑ ÑÑкаÑÑÑ Ð¿ÑоÑвÑÑленнÑ.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)