ÐÑÐµÐ´Ð»Ð°Ð³Ð°Ñ Ð²Ð°ÑÐµÐ¼Ñ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÑовеÑÑ Ð¼Ð°ÑÑеÑов дÑевноÑÑи.
ÐиндзÑ-ÑазÑабоÑÑики пÑоÑлого иÑполÑзовали Ð¸Ñ , ÑÑÐ¾Ð±Ñ ÑÑложниÑÑ ÐºÐ¾Ð´ и заоÑÑÑиÑÑ ÑазÑм ÑÐµÑ , кÑо бÑÐ´ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÐµÐ³Ð¾ поÑле Ð½Ð¸Ñ .
ÐÑи найме пÑовеÑÑÑÑие ÑÑаÑелÑно иÑÑÑ Ð¸Ñ Ð¿Ñименение в коде ÑоиÑкаÑелей.
ÐовиÑки иногда иÑполÑзÑÑÑ Ð¸Ñ ÐµÑÑ Ð»ÑÑÑе, Ñем маÑÑÑÑе ниндзÑ!
ÐÑоÑиÑайÑе Ð¸Ñ Ð¸ ÑеÑиÑе, кÑо вÑ: новиÑок или Ð½Ð¸Ð½Ð´Ð·Ñ ÑазÑабоÑки?
Ðногие пÑÑалиÑÑ Ð¿ÑойÑи по пÑÑи ниндзÑ! Ðало кÑо пÑеÑÑпел.
ÐÑаÑкоÑÑÑ â ÑеÑÑÑа ÑаланÑа!
ÐиÑиÑе «как коÑоÑе», а не как понÑÑнее. ÐокажиÑе, наÑколÑко Ð²Ñ ÑмнÑ!
«ÐенÑÑе бÑкв» â ÑважиÑелÑÐ½Ð°Ñ Ð¿ÑиÑина Ð´Ð»Ñ Ð½Ð°ÑÑÑÐµÐ½Ð¸Ñ Ð»ÑбÑÑ ÑоглаÑений. ÐÐ°Ñ Ð²ÐµÑнÑй помоÑник â возможноÑÑи ÑзÑка, иÑполÑзованнÑе неоÑевиднÑм обÑазом.
ÐбÑаÑиÑе внимание на опеÑаÑÐ¾Ñ Ð²Ð¾Ð¿ÑоÑиÑелÑнÑй знак '?', напÑимеÑ:
// код из jQuery
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
РазÑабоÑÑик, вÑÑÑеÑивÑий ÑÑÑ ÑÑÑÐ¾ÐºÑ Ð¸ попÑÑавÑийÑÑ Ð¿Ð¾Ð½ÑÑÑ, ÑÐµÐ¼Ñ Ð¶Ðµ вÑÑ-Ñаки Ñавно i, ÑкоÑее вÑего, пÑидÑÑ Ðº вам за ÑазÑÑÑнениÑми. Смело ÑкажиÑе емÑ, ÑÑо коÑоÑе â ÑÑо вÑегда лÑÑÑе. ÐоÑвÑÑиÑе и его в пÑÑи ниндзÑ. Ðе забÑдÑÑе вÑÑÑиÑÑ Ðао Ð´Ñ Ñзин.
ÐднобÑквеннÑе пеÑеменнÑе
ÐÑо Ð·Ð½Ð°ÐµÑ â не говоÑиÑ. ÐÑо говоÑÐ¸Ñ â не знаеÑ.
ÐÑÑ Ð¾Ð´Ð¸Ð½ ÑпоÑоб пиÑаÑÑ Ð±ÑÑÑÑее â иÑполÑзоваÑÑ ÐºÐ¾ÑоÑкие имена пеÑеменнÑÑ
. ÐазÑвайÑе иÑ
a, b или c.
ÐоÑоÑÐºÐ°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¿ÑÑÑеÑÑÑ Ð² коде лÑÑÑе, Ñем Ð½Ð¸Ð½Ð´Ð·Ñ Ð² леÑÑ. ÐикÑо не ÑÐ¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¹Ñи еÑ, иÑполÑзÑÑ ÑÑнкÑÐ¸Ñ Â«ÐоиÑк» ÑекÑÑового ÑедакÑоÑа. Ðолее Ñого, даже Ð½Ð°Ð¹Ð´Ñ â никÑо не ÑÐ¼Ð¾Ð¶ÐµÑ Â«ÑаÑÑиÑÑоваÑÑ» ÐµÑ Ð¸ догадаÑÑÑÑ, ÑÑо она ознаÑаеÑ.
â¦Ðо еÑÑÑ Ð¾Ð´Ð½Ð¾ иÑклÑÑение. Ð ÑеÑ
меÑÑаÑ
, где однобÑквеннÑе пеÑеменнÑе обÑепÑинÑÑÑ, напÑимеÑ, в ÑÑÑÑÑике Ñикла â ни в коем ÑлÑÑае не иÑполÑзÑйÑе ÑÑандаÑÑнÑе Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ i, j, k. Ðде Ñгодно, ÑолÑко не здеÑÑ!
ÐÑÑановиÑе Ñвой взÑÑкаÑелÑнÑй взглÑд на ÑÑм-нибÑÐ´Ñ Ð±Ð¾Ð»ÐµÐµ ÑкзоÑиÑеÑком. ÐапÑимеÑ, x или y.
ÐÑÑекÑивноÑÑÑ ÑÑого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° оÑобенно замеÑна, еÑли Ñело Ñикла Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð´Ð½Ñ-две ÑÑÑаниÑÑ (Ñем длиннее â Ñем лÑÑÑе).
Ð ÑÑом ÑлÑÑае замеÑиÑÑ, ÑÑо пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ â ÑÑÑÑÑик Ñикла, без пÑолиÑÑÑÐ²Ð°Ð½Ð¸Ñ Ð²Ð²ÐµÑÑ , невозможно.
ÐÑполÑзÑйÑе ÑокÑаÑениÑ
ÐÑли пÑавила, пÑинÑÑÑе в ваÑей команде, запÑеÑаÑÑ Ð¸ÑполÑзоваÑÑ Ð°Ð±ÑÑÑакÑнÑе имена или имена из одной бÑÐºÐ²Ñ â ÑокÑаÑайÑе Ð¸Ñ .
ÐапÑимеÑ:
listâlst.userAgentâua.browserâbrsr.- â¦Ð¸ Ñ.д.
ТолÑко коллеги Ñ Ñ Ð¾ÑоÑо ÑазвиÑой инÑÑиÑией поймÑÑ Ñакие имена. ÐообÑе, ÑÑаÑайÑеÑÑ ÑокÑаÑаÑÑ Ð²ÑÑ. ТолÑко одаÑÑннÑе инÑÑиÑией лÑди доÑÑÐ¾Ð¹Ð½Ñ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжкой ваÑего кода.
ÐÑдÑÑе абÑÑÑакÑÐ½Ñ Ð¿Ñи вÑбоÑе имени.
ÐÑÑÑий кÑвÑин лепÑÑ Ð²ÑÑ Ð¶Ð¸Ð·Ð½Ñ,
ÐÑÑÐ¾ÐºÐ°Ñ Ð¼ÑзÑка неподвлаÑÑна ÑлÑÑ Ñ,
Ðеликий обÑаз не Ð¸Ð¼ÐµÐµÑ ÑоÑмÑ.
ÐÑи вÑбоÑе имени ÑÑаÑайÑеÑÑ Ð¿ÑимениÑÑ Ð¼Ð°ÐºÑималÑно абÑÑÑакÑное Ñлово, напÑÐ¸Ð¼ÐµÑ obj, data, value, item, elem и Ñ.п.
-
ÐдеалÑное Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿ÐµÑеменной:
data. ÐÑполÑзÑйÑе ÑÑо Ð¸Ð¼Ñ Ð²ÐµÐ·Ð´Ðµ, где можно. РконÑе конÑов, ÐºÐ°Ð¶Ð´Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑодеÑÐ¶Ð¸Ñ Ð´Ð°Ð½Ð½Ñе, не пÑавда ли?â¦Ðо ÑÑо делаÑÑ, еÑли имÑ
dataÑже занÑÑо? ÐопÑобÑйÑеvalue, оно не менее ÑнивеÑÑалÑно. ÐÐµÐ´Ñ ÐºÐ°Ð¶Ð´Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑодеÑÐ¶Ð¸Ñ Ð·Ð½Ð°Ñение. -
ÐазÑвайÑе пеÑеменнÑÑ Ð¿Ð¾ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÑе она Ñ ÑаниÑ:
str,numâ¦ÐопÑобÑйÑе! СделаÑÑ Ð»Ð¸ Ñакие имена инÑеÑеÑнее ÑазÑабоÑкÑ? Ðак ни ÑÑÑанно, да и намного!
ÐазалоÑÑ Ð±Ñ, название пеÑеменной ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑиÑ, говоÑÐ¸Ñ Ð¾ Ñом, ÑÑо в пеÑеменной â ÑиÑло, обÑÐµÐºÑ Ð¸Ð»Ð¸ маÑÑив⦠С дÑÑгой ÑÑоÑонÑ, когда непоÑвÑÑÑннÑй бÑÐ´ÐµÑ ÑазбиÑаÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ â он Ñ Ñдивлением обнаÑÑжиÑ, ÑÑо инÑоÑмаÑии неÑ!
ÐÐµÐ´Ñ ÐºÐ°Ðº Ñаз Ñип легко понÑÑÑ, запÑÑÑив оÑладÑик и поÑмоÑÑев, ÑÑо внÑÑÑи. Ðо в ÑÑм ÑмÑÑл ÑÑой пеÑеменной? ЧÑо за маÑÑив/обÑекÑ/ÑиÑло в ней Ñ ÑаниÑÑÑ? Ðез долгой медиÑаÑии над кодом ÑÑÑ Ð½Ðµ обойÑиÑÑ!
-
â¦Ðо ÑÑо делаÑÑ, еÑли и ÑÑи имена законÑилиÑÑ? ÐÑоÑÑо добавÑÑе ÑиÑÑÑ:
data1, item2, elem5â¦
ÐÑовеÑка вниманиÑ
ТолÑко иÑÑинно внимаÑелÑнÑй пÑогÑаммиÑÑ Ð´Ð¾ÑÑоин понÑÑÑ Ð²Ð°Ñ ÐºÐ¾Ð´. Ðо как пÑовеÑиÑÑ, доÑÑоин ли ÑиÑаÑÑий?
Ðдин из ÑпоÑобов â иÑполÑзоваÑÑ Ð¿Ð¾Ñ
ожие имена пеÑеменнÑÑ
, напÑимеÑ, date и data.
Ðегло пÑоÑиÑаÑÑ Ñакой код поÑÑи невозможно. Ð Ñж замеÑиÑÑ Ð¾Ð¿ÐµÑаÑÐºÑ Ð¸ попÑавиÑÑ ÐµÑ⦠Ðмммм⦠ÐÑ Ð·Ð´ÐµÑÑ Ð½Ð°Ð´Ð¾Ð»Ð³Ð¾, вÑÐµÐ¼Ñ Ð¿Ð¾Ð¿Ð¸ÑÑ ÑайкÑ.
Ð ÑÑÑкие Ñлова и ÑокÑаÑениÑ
ÐÑли вам пÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ð¸Ð½Ð½Ñе, понÑÑнÑе имена пеÑеменнÑÑ â ÑÑо поделаÑÑ⦠Ðо и здеÑÑ ÐµÑÑÑ Ð¿ÑоÑÑÐ¾Ñ Ð´Ð»Ñ ÑвоÑÑеÑÑва!
ÐазовиÑе пеÑеменнÑе «калÑкой» Ñ ÑÑÑÑкого ÑзÑка или как-Ñо «ÑлÑÑÑиÑе» английÑкое Ñлово.
Родном меÑÑе напиÑиÑе let ssilka, в дÑÑгом let ssylka, в ÑÑеÑÑем let link, в ÑеÑвÑÑÑом â let lnk⦠ÐÑо дейÑÑвиÑелÑно великолепно ÑабоÑÐ°ÐµÑ Ð¸ оÑÐµÐ½Ñ ÐºÑеаÑивно!
ÐолиÑеÑÑво оÑибок пÑи поддеÑжке Ñакого кода ÑвелиÑиваеÑÑÑ Ð²Ð¾ много Ñаз.
ХиÑÑÑе ÑинонимÑ
ÐÑÐµÐ½Ñ ÑÑÑдно найÑи ÑÑÑнÑÑ ÐºÐ¾ÑÐºÑ Ð² ÑÑмной комнаÑе, оÑобенно, когда ÐµÑ Ñам неÑ.
ЧÑÐ¾Ð±Ñ Ð±Ñло не ÑкÑÑно â иÑполÑзÑйÑе Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ðµ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ Ð´ÐµÐ¹ÑÑвий.
ÐапÑимеÑ, еÑли меÑод показÑÐ²Ð°ÐµÑ ÑÑо-Ñо на ÑкÑане â наÑниÑе его название Ñ display.. (Ñкажем, displayElement), а в дÑÑгом меÑÑе обÑÑвиÑе аналогиÑнÑй меÑод как show.. (showFrame).
Ðак Ð±Ñ Ð½Ð°Ð¼ÐµÐºÐ½Ð¸Ñе ÑÑим, ÑÑо ÑÑÑеÑÑвÑÐµÑ Ñонкое ÑазлиÑие Ð¼ÐµÐ¶Ð´Ñ ÑпоÑобами показа в ÑÑÐ¸Ñ Ð¼ÐµÑÐ¾Ð´Ð°Ñ , Ñ Ð¾ÑÑ Ð½Ð° Ñамом деле его неÑ.
Ðо возможноÑÑи, договоÑиÑеÑÑ Ñ Ñленами Ñвоей командÑ. ÐÑли ÐаÑÑ Ð² ÑвоиÑ
клаÑÑаÑ
иÑполÑзÑÐµÑ display.., Ñо ÐалеÑа â обÑзаÑелÑно render.., а ÐеÑÑ â paint...
â¦Ð напÑоÑив, еÑли еÑÑÑ Ð´Ð²Ðµ ÑÑнкÑии Ñ Ð²Ð°Ð¶Ð½Ñми оÑлиÑиÑми â иÑполÑзÑйÑе одно и Ñо же Ñлово Ð´Ð»Ñ Ð¸Ñ
опиÑаниÑ! ÐапÑимеÑ, Ñ print... можно наÑаÑÑ Ð¼ÐµÑод пеÑаÑи на пÑинÑеÑе printPage, а Ñакже â меÑод Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекÑÑа на ÑÑÑаниÑÑ printText.
Ð ÑепеÑÑ Ð¿ÑÑÑÑ ÑиÑаÑÑий код дÑмаеÑ: «ÐÑда же вÑÐ²Ð¾Ð´Ð¸Ñ ÑообÑение printMessage?». ÐÑобÑй Ñик â добавиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾ÑÑи. ÐÑÑÑÑ printMessage вÑÐ²Ð¾Ð´Ð¸Ñ Ð½Ðµ ÑÑда, кÑда вÑе, а в новое окно!
ÐовÑоÑно иÑполÑзÑйÑе имена
Ðогда Ñелое Ñазделено, его ÑаÑÑÑм
нÑÐ¶Ð½Ñ Ð¸Ð¼ÐµÐ½Ð°.
Уже доÑÑаÑоÑно имÑн.
ÐÑжно знаÑÑ, когда оÑÑановиÑÑÑÑ.
Ðо возможноÑÑи, повÑоÑно иÑполÑзÑйÑе имена пеÑеменнÑÑ , ÑÑнкÑий и ÑвойÑÑв. ÐÑоÑÑо запиÑÑвайÑе в Ð½Ð¸Ñ Ð½Ð¾Ð²Ñе знаÑениÑ.
ÐобавлÑйÑе новое имÑ, ÑолÑко еÑли ÑÑо абÑолÑÑно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾. Ð ÑÑнкÑии ÑÑаÑайÑеÑÑ Ð¾Ð±Ð¾Ð¹ÑиÑÑ ÑолÑко Ñеми пеÑеменнÑми, коÑоÑÑе бÑли пеÑÐµÐ´Ð°Ð½Ñ ÐºÐ°Ðº паÑамеÑÑÑ.
ÐÑо не ÑолÑко заÑÑÑÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¸Ñ Ñого, ÑÑо ÑейÑÐ°Ñ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пеÑеменной, но и ÑÐ´ÐµÐ»Ð°ÐµÑ Ð¿Ð¾ÑÑи невозможнÑм поиÑк меÑÑа, в коÑоÑом конкÑеÑное знаÑение бÑло пÑиÑвоено.
Ð¦ÐµÐ»Ñ â ÑазвиÑÑ Ð¸Ð½ÑÑиÑÐ¸Ñ Ð¸ памÑÑÑ ÑиÑаÑÑего код пÑогÑаммиÑÑа. ÐÑ, а пока инÑÑиÑÐ¸Ñ Ñлаба, он Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑÑоÑно анализиÑоваÑÑ ÐºÐ¾Ð´ и конÑпекÑиÑоваÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ веÑки иÑполнениÑ.
ÐÑодвинÑÑÑй ваÑÐ¸Ð°Ð½Ñ ÑÑого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° â незамеÑно (!) подмениÑÑ Ð¿ÐµÑеменнÑÑ Ð½Ð° неÑÑо Ð¿Ð¾Ñ Ð¾Ð¶ÐµÐµ, напÑимеÑ:
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();
...
...многобÑкв...
...
... // <-- пÑогÑаммиÑÑ Ð·Ð°Ñ
оÑÐµÑ Ð²Ð½ÐµÑÑи иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑда, и...
...
}
ÐаÑедÑий в ÑеÑÐµÐ´Ð¸Ð½Ñ Ð¼ÐµÑода render пÑогÑаммиÑÑ, ÑкоÑее вÑего, не замеÑиÑ, ÑÑо пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ user локалÑно пеÑекÑÑÑа и попÑÑаеÑÑÑ ÑабоÑаÑÑ Ñ Ð½ÐµÐ¹, полагаÑ, ÑÑо ÑÑо â ÑезÑлÑÑÐ°Ñ authenticateUser()⦠ÐовÑÑка заÑ
лопнÑлаÑÑ! ÐдÑавÑÑвÑй, оÑладÑик.
Ðнимание⦠СÑÑ-пÑи-из!
ÐÑÑÑ ÑÑнкÑии, название коÑоÑÑÑ
говоÑÐ¸Ñ Ð¾ Ñом, ÑÑо они ниÑего не менÑÑÑ. ÐапÑимеÑ, isReady(), checkPermission(), findTags()⦠ÐÑедполагаеÑÑÑ, ÑÑо пÑи вÑзове они пÑоизведÑÑ Ð½ÐµÐºÐ¸Ðµ вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ найдÑÑ Ð¸ возвÑаÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñе даннÑе, но пÑи ÑÑом иÑ
не изменÑÑ. Ð ÑÑакÑаÑаÑ
ÑÑо назÑваеÑÑÑ Â«Ð¾ÑÑÑÑÑÑвие ÑÑоÑонниÑ
ÑÑÑекÑов».
Ðо-наÑÑоÑÑÐµÐ¼Ñ ÐºÑаÑивÑй пÑиÑм â делаÑÑ Ð² ÑÐ°ÐºÐ¸Ñ ÑÑнкÑиÑÑ ÑÑо-нибÑÐ´Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾Ðµ, заодно Ñ Ð¿ÑоÑеÑÑом пÑовеÑки. ЧÑо именно â ÑовеÑÑенно неважно.
Удивление и оÑеломление, коÑоÑое Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ñ Ð²Ð°Ñего коллеги, когда он ÑвидиÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ на is.., check.. или find... ÑÑо-Ñо менÑÐµÑ â неÑомненно, ÑаÑÑиÑÐ¸Ñ ÐµÐ³Ð¾ гÑаниÑÑ ÑазÑмного!
ÐÑÑ Ð¾Ð´Ð½Ð° ваÑиаÑÐ¸Ñ Ñакого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° â возвÑаÑаÑÑ Ð½ÐµÑÑандаÑÑное знаÑение.
ÐÐµÐ´Ñ Ð¾Ð±ÑеизвеÑÑно, ÑÑо is⦠и check⦠обÑÑно возвÑаÑаÑÑ true/false. ÐÑодемонÑÑÑиÑÑйÑе оÑигиналÑное мÑÑление. ÐÑÑÑÑ Ð²Ñзов checkPermission возвÑаÑÐ°ÐµÑ Ð½Ðµ ÑезÑлÑÑÐ°Ñ true/false, а обÑÐµÐºÑ Ñ ÑезÑлÑÑаÑами пÑовеÑки! Ð ÑÑо, полезно.
Те же ÑазÑабоÑÑики, кÑо попÑÑаеÑÑÑ Ð½Ð°Ð¿Ð¸ÑаÑÑ Ð¿ÑовеÑÐºÑ if (checkPermission(..)), бÑдÑÑ Ð²ÐµÑÑма ÑÐ´Ð¸Ð²Ð»ÐµÐ½Ñ ÑезÑлÑÑаÑом. ÐÑвеÑÑÑе им: «Ðадо ÑиÑаÑÑ Ð´Ð¾ÐºÑменÑаÑиÑ!». РпеÑеÑлиÑе ÑÑÑ ÑÑаÑÑÑ.
ÐоÑнÑе ÑÑнкÑии!
Ðао везде и во вÑÑм,
и ÑпÑава, и Ñлева.
Ðе огÑаниÑивайÑе дейÑÑÐ²Ð¸Ñ ÑÑнкÑии Ñем, ÑÑо напиÑано в ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¸. ÐÑдÑÑе ÑиÑе.
ÐапÑимеÑ, ÑÑнкÑÐ¸Ñ validateEmail(email) можеÑ, кÑоме пÑовеÑки e-mail на пÑавилÑноÑÑÑ, вÑводиÑÑ ÑообÑение об оÑибке и пÑоÑиÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ ввеÑÑи e-mail.
ÐÑбеÑиÑе Ñ Ð¾ÑÑ Ð±Ñ Ð¿Ð°ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ Ð´ÐµÐ¹ÑÑвий, кÑоме оÑновного назнаÑÐµÐ½Ð¸Ñ ÑÑнкÑии. Ðлавное â они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð½ÐµÐ¾ÑÐµÐ²Ð¸Ð´Ð½Ñ Ð¸Ð· Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÑÑнкÑии. ÐÑÑиннÑй ниндзÑ-ÑазÑабоÑÑик ÑÐ´ÐµÐ»Ð°ÐµÑ Ñак, ÑÑо они бÑдÑÑ Ð½ÐµÐ¾ÑÐµÐ²Ð¸Ð´Ð½Ñ Ð¸ из кода Ñоже.
ÐбÑединение неÑколÑÐºÐ¸Ñ ÑмежнÑÑ Ð´ÐµÐ¹ÑÑвий в Ð¾Ð´Ð½Ñ ÑÑнкÑÐ¸Ñ Ð·Ð°ÑиÑÐ¸Ñ Ð²Ð°Ñ ÐºÐ¾Ð´ Ð¾Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑзованиÑ.
ÐÑедÑÑавÑÑе, ÑÑо дÑÑÐ³Ð¾Ð¼Ñ ÑазÑабоÑÑÐ¸ÐºÑ Ð½Ñжно ÑолÑко пÑовеÑиÑÑ Ð°Ð´ÑеÑ, а ÑообÑение â не вÑводиÑÑ. ÐаÑа ÑÑнкÑÐ¸Ñ validateEmail(email), коÑоÑÐ°Ñ Ð´ÐµÐ»Ð°ÐµÑ Ð¸ Ñо и дÑÑгое, ÐµÐ¼Ñ Ð½Ðµ подойдÑÑ. Рон не пÑеÑвÑÑ Ð²Ð°ÑÑ Ð¼ÐµÐ´Ð¸ÑаÑÐ¸Ñ Ð²Ð¾Ð¿ÑоÑами о ней.
ÐÑого
ÐÑе ÑовеÑÑ Ð²ÑÑе пÑиÑли из ÑеалÑного кода⦠Рв Ñом ÑиÑле, Ð¾Ñ ÑазÑабоÑÑиков Ñ Ð±Ð¾Ð»ÑÑим опÑÑом. Ðозможно, даже болÑÑе ваÑего, Ñак ÑÑо не ÑÑдиÑе опÑомеÑÑиво ;)
- СледÑйÑе неÑколÑким из Ð½Ð¸Ñ â и Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑÐ°Ð½ÐµÑ Ð¿Ð¾Ð»Ð¾Ð½ ÑÑÑпÑизов.
- СледÑйÑе многим â и Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑÐ°Ð½ÐµÑ Ð¸ÑÑинно ваÑим, никÑо не Ð·Ð°Ñ Ð¾ÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ ÐµÐ³Ð¾.
- СледÑйÑе вÑем â и Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑÐ°Ð½ÐµÑ ÑеннÑм ÑÑоком Ð´Ð»Ñ Ð¼Ð¾Ð»Ð¾Ð´ÑÑ ÑазÑабоÑÑиков, иÑÑÑÐ¸Ñ Ð¿ÑоÑвеÑлениÑ.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)