ÐÑа ÑÑаÑÑÑ Ð¿ÑедÑÑавлÑÐµÑ Ñобой мой волÑнÑй пеÑевод How To Write Unmaintainable Code («как пиÑаÑÑ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑживаемÑй код») Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñми, акÑÑалÑнÑми Ð´Ð»Ñ JavaScript.
Ðозможно, в ÐºÐ°ÐºÐ¸Ñ -Ñо из ÑÑÐ¸Ñ ÑовеÑов вам даже ÑдаÑÑÑÑ ÑзнаÑÑ Â«ÑÑого паÑÐ½Ñ Ð² зеÑкале».
ÐÑÐµÐ´Ð»Ð°Ð³Ð°Ñ Ð²Ð°ÑÐµÐ¼Ñ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ ÑовеÑÑ Ð¼Ð°ÑÑеÑов дÑевноÑÑи, Ñледование коÑоÑÑм ÑоздаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑабоÑие меÑÑа Ð´Ð»Ñ JavaScript-ÑазÑабоÑÑиков.
ÐÑли Ð²Ñ Ð±ÑдеÑе им ÑледоваÑÑ, Ñо Ð²Ð°Ñ ÐºÐ¾Ð´ бÑÐ´ÐµÑ Ñак Ñложен в поддеÑжке, ÑÑо Ñ JavaScriptâеÑов, коÑоÑÑе пÑидÑÑ Ð¿Ð¾Ñле ваÑ, даже пÑоÑÑейÑее изменение займÑÑ Ð³Ð¾Ð´Ñ Ð¾Ð¿Ð»Ð°Ñиваемого ÑÑÑда! Ð ÑложнÑе задаÑи оплаÑиваÑÑÑÑ Ñ Ð¾ÑоÑо, Ñак ÑÑо они, опÑеделÑнно, ÑкажÑÑ Ð²Ð°Ð¼ «СпаÑибо».
Ðолее Ñого, внимаÑелÑно ÑледÑÑ ÑÑим пÑавилам, Ð²Ñ ÑÐ¾Ñ ÑаниÑе и ÑÐ²Ð¾Ñ ÑабоÑее меÑÑо, Ñак как вÑе бÑдÑÑ Ð±Ð¾ÑÑÑÑÑ Ð²Ð°Ñего кода и бежаÑÑ Ð¾Ñ Ð½ÐµÐ³Ð¾â¦
â¦ÐпÑоÑем, вÑÐµÐ¼Ñ ÑÐ²Ð¾Ñ Ð¼ÐµÑа. ÐÑи напиÑании Ñакого кода он не должен вÑглÑдеÑÑ ÑложнÑм в поддеÑжке, код должен бÑÑÑ ÑаковÑм.
Явно кÑивой код Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¿Ð¸ÑаÑÑ Ð»Ñбой дÑÑак. ÐÑо замеÑÑÑ, и Ð²Ð°Ñ ÑволÑÑ, а код бÑÐ´ÐµÑ Ð¿ÐµÑепиÑан Ñ Ð½ÑлÑ. ÐÑ Ð½Ðµ можеÑе Ñакого допÑÑÑиÑÑ. ÐÑи ÑовеÑÑ ÑÑиÑÑваÑÑ ÑакÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ. Ðа здÑавÑÑвÑÐµÑ Ð´Ð·ÐµÐ½.
СоглаÑÐµÐ½Ð¸Ñ â по наÑÑÑоениÑ
РабоÑий-ÑиÑÑилÑÑик оÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð´Ð¾Ð¼:
«â¦ÐÐ¾Ñ ÑолÑко жÑк Ñ Ð²Ð°Ñ Ð½ÐµÐ¾Ð±ÑÑнÑйâ¦
Ð ÑÑÐ¾Ð±Ñ Ñ Ð½Ð¸Ð¼ ÑпÑавиÑÑÑÑ, Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ жиÑÑ ÐºÐ°Ðº жÑк, ÑÑаÑÑ Ð¶Ñком, дÑмаÑÑ ÐºÐ°Ðº жÑк.»
(гÑÑзÑÑ ÑÑол СимпÑонов)
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼ÐµÑаÑÑ Ð´ÑÑÐ³Ð¾Ð¼Ñ Ð¿ÑогÑаммиÑÑÑ Ð¸ÑпÑавиÑÑ Ð²Ð°Ñ ÐºÐ¾Ð´, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð½ÑÑÑ Ð¿ÑÑÑ ÐµÐ³Ð¾ мÑÑлей.
ÐÑедÑÑавÑÑе, пеÑед ним â Ð²Ð°Ñ Ð±Ð¾Ð»ÑÑой ÑкÑипÑ. Ð ÐµÐ¼Ñ Ð½Ñжно попÑавиÑÑ ÐµÐ³Ð¾. У него Ð½ÐµÑ Ð½Ð¸ вÑемени ни желаниÑ, ÑÑÐ¾Ð±Ñ ÑиÑаÑÑ ÐµÐ³Ð¾ Ñеликом, а Ñем более â доÑконалÑно ÑазбиÑаÑÑ. Ðн Ñ Ð¾Ñел Ð±Ñ Ð¿Ð¾-бÑÑÑÑÐ¾Ð¼Ñ Ð½Ð°Ð¹Ñи нÑжное меÑÑо, ÑделаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ и ÑбÑаÑÑÑÑ Ð²Ð¾ÑвоÑÑи без поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð±Ð¾ÑнÑÑ ÑÑÑекÑов.
Ðн ÑаÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð²Ð°Ñ ÐºÐ¾Ð´ как Ð±Ñ ÑеÑез ÑÑÑбоÑÐºÑ Ð¸Ð· ÑÑалеÑной бÑмаги. ÐÑо не даÑÑ ÐµÐ¼Ñ Ð¾Ð±Ñей каÑÑинÑ, он иÑÐµÑ ÑÐ¾Ñ Ð½ÐµÐ±Ð¾Ð»ÑÑой ÑÑагменÑ, коÑоÑÑй ÐµÐ¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ измениÑÑ. Ðо кÑайней меÑе, он надееÑÑÑ, ÑÑо ÑÑÐ¾Ñ ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ±Ð¾Ð»ÑÑим.
Ðа ÑÑо он попÑÑаеÑÑÑ Ð¾Ð¿ÐµÑеÑÑÑÑ Ð² ÑÑом поиÑке â Ñак ÑÑо на ÑоглаÑениÑ, пÑинÑÑÑе в пÑогÑаммиÑовании, об Ð¸Ð¼ÐµÐ½Ð°Ñ Ð¿ÐµÑеменнÑÑ , названиÑÑ ÑÑнкÑий и меÑодовâ¦
Ðак заÑÑÑдниÑÑ Ð·Ð°Ð´Ð°ÑÑ? Ðожно везде наÑÑÑаÑÑ ÑоглаÑÐµÐ½Ð¸Ñ â ÑÑо помеÑÐ°ÐµÑ ÐµÐ¼Ñ, но Ñакое могÑÑ Ð·Ð°Ð¼ÐµÑиÑÑ, и код бÑÐ´ÐµÑ Ð¿ÐµÑепиÑан. Ðак поÑÑÑпил Ð±Ñ Ð½Ð¸Ð½Ð´Ð·Ñ Ð½Ð° ваÑем меÑÑе?
â¦ÐÑавилÑно! СледÑйÑе ÑоглаÑениÑм «в обÑем», но иногда â наÑÑÑайÑе Ð¸Ñ .
ТÑаÑелÑно ÑазбÑоÑаннÑе по ÐºÐ¾Ð´Ñ Ð½Ð°ÑÑÑÐµÐ½Ð¸Ñ ÑоглаÑений Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑоÑÐ¾Ð½Ñ Ð½Ðµ делаÑÑ ÐºÐ¾Ð´ Ñвно Ð¿Ð»Ð¾Ñ Ð¸Ð¼ пÑи пеÑвом взглÑде, а Ñ Ð´ÑÑгой â имеÑÑ Ð² ÑоÑноÑÑи ÑÐ¾Ñ Ð¶Ðµ, и даже лÑÑÑий ÑÑÑекÑ, Ñем Ñвное неÑледование им!
ÐÑÐ¸Ð¼ÐµÑ Ð¸Ð· jQuery
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ ÑÑебÑÐµÑ Ð·Ð½Ð°Ð½Ð¸Ð¹ jQuery/DOM, еÑли пока Ð¸Ñ Ñ Ð²Ð°Ñ Ð½ÐµÑ â пÑопÑÑÑиÑе его, ниÑего ÑÑÑаÑного, но обÑзаÑелÑно веÑниÑеÑÑ Ðº Ð½ÐµÐ¼Ñ Ð¿Ð¾Ð·Ð¶Ðµ. Ðодобное ÑÑÐ¾Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑаÑов оÑладки.
Ðо ÑÑеймвоÑке jQuery еÑÑÑ Ð¼ÐµÑод wrap, коÑоÑÑй обÑÑÑÑÐ²Ð°ÐµÑ Ð¾Ð´Ð¸Ð½ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²Ð¾ÐºÑÑг дÑÑгого:
var img = $('<img/>'); // Ñоздали новÑе ÑлеменÑÑ (jQuery-ÑинÑакÑиÑ)
var div = $('<div/>'); // и помеÑÑили в пеÑеменнÑÑ
img.wrap(div); // обеÑнÑÑÑ img в div
div.append('<span/>');
РезÑлÑÑÐ°Ñ ÐºÐ¾Ð´Ð° поÑле опеÑаÑии wrap â два ÑлеменÑа, один вложен в дÑÑгой:
<div>
<img/>
</div>
Ð ÑÑо же поÑле append?
Ðожно пÑедположиÑÑ, ÑÑо <span/> добавиÑÑÑ Ð² ÐºÐ¾Ð½ÐµÑ div, ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле img⦠Ðо ниÑего подобного!
ÐÑкÑÑнÑй Ð½Ð¸Ð½Ð´Ð·Ñ Ñже нанÑÑ Ñвой ÑÐ´Ð°Ñ Ð¸ поведение кода ÑÑало непÑавилÑнÑм, Ñ Ð¾ÑÑ ÑазÑабоÑÑик об ÑÑом даже не подозÑеваеÑ.
Ðак пÑавило, меÑÐ¾Ð´Ñ jQuery ÑабоÑаÑÑ Ñ Ñеми ÑлеменÑами, коÑоÑÑе им пеÑеданÑ. Ðо не здеÑÑ!
ÐнÑÑÑи вÑзова img.wrap(div) пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÐºÐ»Ð¾Ð½Ð¸Ñование div и вокÑÑг img обоÑаÑиваеÑÑÑ Ð½Ðµ Ñам div, а его клон. ÐÑи ÑÑом иÑÑ
Ð¾Ð´Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ div не менÑеÑÑÑ, в ней как бÑл пÑÑÑой div, Ñак и оÑÑалÑÑ.
РиÑоге, поÑле вÑзова полÑÑаеÑÑÑ Ð´Ð²Ð° незавиÑимÑÑ
div'а: пеÑвÑй ÑодеÑÐ¶Ð¸Ñ img (ÑÑÐ¾Ñ Ð½ÐµÑвнÑй клон никÑда не пÑиÑвоен), а вÑоÑой â Ð½Ð°Ñ span.
ÐбÑÑÑÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ оÑÐµÐ½Ñ Ð¿Ð¾Ð½ÑÑнÑ? ÐапиÑано ÑÑо-Ñо ÑÑÑанное? ÐÑо пÑоÑÑо ÑазÑм, пÑивÑкÑий, ÑÑо ÑоглаÑÐµÐ½Ð¸Ñ ÑважаÑÑÑÑ, не допÑÑÐºÐ°ÐµÑ Ð¼ÑÑли, ÑÑо вÑзов wrap â неÑвно клониÑÑÐµÑ ÑлеменÑ. ÐÐµÐ´Ñ Ð´ÑÑгие jQuery-меÑодÑ, кÑоме clone ÑÑого не делаÑÑ.
Ðак говоÑил УÑиÑелÑ: «РдÑевноÑÑи лÑди ÑÑилиÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑовеÑÑенÑÑвоваÑÑ ÑебÑ. ÐÑнÑе ÑÑаÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑдивиÑÑ Ð´ÑÑÐ³Ð¸Ñ Â».
ÐÑаÑкоÑÑÑ â ÑеÑÑÑа ÑаланÑа!
ÐиÑиÑе «как коÑоÑе», а не как понÑÑнее. «ÐенÑÑе бÑкв» â ÑважиÑелÑÐ½Ð°Ñ Ð¿ÑиÑина Ð´Ð»Ñ Ð½Ð°ÑÑÑÐµÐ½Ð¸Ñ Ð»ÑбÑÑ ÑоглаÑений.
ÐÐ°Ñ Ð²ÐµÑнÑй помоÑник â возможноÑÑи ÑзÑка, иÑполÑзованнÑе неоÑевиднÑм обÑазом.
ÐбÑаÑиÑе внимание на опеÑаÑÐ¾Ñ Ð²Ð¾Ð¿ÑоÑиÑелÑнÑй знак '?', напÑимеÑ:
// код из jQuery
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
РазÑабоÑÑик, вÑÑÑеÑивÑий ÑÑÑ ÑÑÑÐ¾ÐºÑ Ð¸ попÑÑавÑийÑÑ Ð¿Ð¾Ð½ÑÑÑ, ÑÐµÐ¼Ñ Ð¶Ðµ вÑÑ-Ñаки Ñавно i, ÑкоÑее вÑего пÑидÑÑ Ðº вам за ÑазÑÑÑнениÑми. Смело ÑкажиÑе емÑ, ÑÑо коÑоÑе â ÑÑо вÑегда лÑÑÑе. ÐоÑвÑÑиÑе и его в пÑÑи ниндзÑ. Ðе забÑдÑÑе вÑÑÑиÑÑ Ðао Ð´Ñ Ñзин.
Ðменование
СÑÑеÑÑвеннÑÑ ÑаÑÑÑ Ð½Ð°Ñки о Ñоздании неподдеÑживаемого кода Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸ÑкÑÑÑÑво вÑбоÑа имÑн.
ÐднобÑквеннÑе пеÑеменнÑе
ÐазÑвайÑе пеÑеменнÑе коÑоÑко: a, b или c.
Ð ÑÑом ÑлÑÑае никÑо не ÑÐ¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¹Ñи еÑ, иÑполÑзÑÑ ÑÑнÑÐ¸Ñ Â«ÐоиÑк» ÑекÑÑового ÑедакÑоÑа.
Ðолее Ñого, даже Ð½Ð°Ð¹Ð´Ñ â никÑо не ÑÐ¼Ð¾Ð¶ÐµÑ Â«ÑаÑÑиÑÑоваÑÑ» ÐµÑ Ð¸ догадаÑÑÑÑ, ÑÑо она ознаÑаеÑ.
Ðе иÑполÑзÑйÑе i Ð´Ð»Ñ Ñикла
Ð ÑеÑ
меÑÑаÑ
, где однобÑквеннÑе пеÑеменнÑе обÑепÑинÑÑÑ, напÑимеÑ, в ÑÑÑÑÑике Ñикла â ни в коем ÑлÑÑае не иÑполÑзÑйÑе ÑÑандаÑÑнÑе Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ i, j, k. Ðде Ñгодно, ÑолÑко не здеÑÑ!
ÐÑÑановиÑе Ñвой взÑÑкаÑелÑнÑй взглÑд на ÑÑм-нибÑÐ´Ñ Ð±Ð¾Ð»ÐµÐµ ÑкзоÑиÑеÑком. ÐапÑимеÑ, x или y.
ÐÑÑекÑивноÑÑÑ ÑÑого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° оÑобенно замеÑна, еÑли Ñело Ñикла Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð´Ð½Ñ-две ÑÑÑаниÑÑ (Ñем длиннее â Ñем лÑÑÑе).
Ð ÑÑом ÑлÑÑае замеÑиÑÑ, ÑÑо пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ â ÑÑÑÑÑик Ñикла, без пÑолиÑÑÑÐ²Ð°Ð½Ð¸Ñ Ð²Ð²ÐµÑÑ , невозможно.
Ð ÑÑÑкие Ñлова и ÑокÑаÑениÑ
ÐÑли вам пÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ð¸Ð½Ð½Ñе, понÑÑнÑе имена пеÑеменнÑÑ â ÑÑо поделаÑÑ⦠Ðо и здеÑÑ ÐµÑÑÑ Ð¿ÑоÑÑÐ¾Ñ Ð´Ð»Ñ ÑвоÑÑеÑÑва!
ÐазовиÑе пеÑеменнÑе «калÑкой» Ñ ÑÑÑÑкого ÑзÑка или как-Ñо «ÑлÑÑÑиÑе» английÑкое Ñлово.
Родном меÑÑе напиÑиÑе var ssilka, в дÑÑгом var ssylka, в ÑÑеÑÑем var link, в ÑеÑвÑÑÑом â var lnk⦠ÐÑо дейÑÑвиÑелÑно великолепно ÑабоÑÐ°ÐµÑ Ð¸ оÑÐµÐ½Ñ ÐºÑеаÑивно!
ÐолиÑеÑÑво оÑибок пÑи поддеÑжке Ñакого кода ÑвелиÑиваеÑÑÑ Ð²Ð¾ много Ñаз.
ÐÑдÑÑе абÑÑÑакÑÐ½Ñ Ð¿Ñи вÑбоÑе имени
ÐÑÑÑий кÑвÑин лепÑÑ Ð²ÑÑ Ð¶Ð¸Ð·Ð½Ñ.
ÐÑÑÐ¾ÐºÐ°Ñ Ð¼ÑзÑка неподвлаÑÑна ÑлÑÑ Ñ.
Ðеликий обÑаз не Ð¸Ð¼ÐµÐµÑ ÑоÑмÑ.
ÐÑи вÑбоÑе имени ÑÑаÑайÑеÑÑ Ð¿ÑимениÑÑ Ð¼Ð°ÐºÑималÑно абÑÑÑакÑное Ñлово, напÑÐ¸Ð¼ÐµÑ obj, data, value, item, elem и Ñ.п.
-
ÐдеалÑное Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿ÐµÑеменной:
data. ÐÑполÑзÑйÑе ÑÑо Ð¸Ð¼Ñ Ð²ÐµÐ·Ð´Ðµ, где можно. РконÑе конÑов, ÐºÐ°Ð¶Ð´Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑодеÑÐ¶Ð¸Ñ Ð´Ð°Ð½Ð½Ñе, не пÑавда ли?Ðо ÑÑо делаÑÑ, еÑли имÑ
dataÑже занÑÑо? ÐопÑобÑйÑеvalue, оно не менее ÑнивеÑÑалÑно. ÐÐµÐ´Ñ ÐºÐ°Ð¶Ð´Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑодеÑÐ¶Ð¸Ñ Ð·Ð½Ð°Ñение.ÐанÑÑо и ÑÑо? ÐÑÑÑ Ð¸ дÑÑгой ваÑианÑ.
-
ÐазÑвайÑе пеÑеменнÑÑ Ð¿Ð¾ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÑе она Ñ ÑаниÑ:
obj,num,arrâ¦ÐаÑколÑко ÑÑо ÑÑÐ»Ð¾Ð¶Ð½Ð¸Ñ ÑазÑабоÑкÑ? Ðак ни ÑÑÑанно, намного!
ÐазалоÑÑ Ð±Ñ, название пеÑеменной ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑиÑ, говоÑÐ¸Ñ Ð¾ Ñом, ÑÑо в пеÑеменной â ÑиÑло, обÑÐµÐºÑ Ð¸Ð»Ð¸ маÑÑив⦠С дÑÑгой ÑÑоÑонÑ, когда непоÑвÑÑÑннÑй бÑÐ´ÐµÑ ÑазбиÑаÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ â он Ñ Ñдивлением обнаÑÑжиÑ, ÑÑо инÑоÑмаÑии неÑ!
ÐÐµÐ´Ñ ÐºÐ°Ðº Ñаз Ñип легко понÑÑÑ, запÑÑÑив оÑладÑик и поÑмоÑÑев, ÑÑо внÑÑÑи. Ðо в ÑÑм ÑмÑÑл ÑÑой пеÑеменной? ЧÑо за маÑÑив/обÑекÑ/ÑиÑло в ней Ñ ÑаниÑÑÑ? Ðез долгой медиÑаÑии над кодом ÑÑÑ Ð½Ðµ обойÑиÑÑ!
-
ЧÑо делаÑÑ, еÑли и ÑÑи имена конÑилиÑÑ? ÐÑоÑÑо добавÑÑе ÑиÑÑÑ:
item1, item2, elem5, data1â¦
ÐÐ¾Ñ Ð¾Ð¶Ð¸Ðµ имена
ТолÑко иÑÑинно внимаÑелÑнÑй пÑогÑаммиÑÑ Ð´Ð¾ÑÑоин понÑÑÑ Ð²Ð°Ñ ÐºÐ¾Ð´. Ðо как пÑовеÑиÑÑ, доÑÑоин ли ÑиÑаÑÑий?
Ðдин из ÑпоÑобов â иÑполÑзоваÑÑ Ð¿Ð¾Ñ
ожие имена пеÑеменнÑÑ
, напÑÐ¸Ð¼ÐµÑ data и date. Ðегло пÑоÑиÑаÑÑ Ñакой код поÑÑи невозможно. Ð Ñж замеÑиÑÑ Ð¾Ð¿ÐµÑаÑÐºÑ Ð¸ попÑавиÑÑ ÐµÑ⦠Ðмммм⦠ÐÑ Ð·Ð´ÐµÑÑ Ð½Ð°Ð´Ð¾Ð»Ð³Ð¾, вÑÐµÐ¼Ñ Ð¿Ð¾Ð¿Ð¸ÑÑ ÑайкÑ.
Ð.Ð.Ð .Ð.Ð.Ð.Ð
ÐÑполÑзÑйÑе ÑокÑаÑениÑ, ÑÑÐ¾Ð±Ñ ÑделаÑÑ ÐºÐ¾Ð´ коÑоÑе.
ÐапÑÐ¸Ð¼ÐµÑ ie (Inner Element), mc (Money Counter) и дÑÑгие. ÐÑли Ð²Ñ Ð¾Ð±Ð½Ð°ÑÑжиÑе, ÑÑо пÑÑаеÑеÑÑ Ð² ниÑ
Ñами â геÑоиÑеÑки ÑÑÑадайÑе, но не пеÑепиÑÑвайÑе код. ÐÑ Ð·Ð½Ð°Ð»Ð¸, на ÑÑо Ñли.
ХиÑÑÑе ÑинонимÑ
ÐÑÐµÐ½Ñ ÑÑÑдно найÑи ÑÑÑнÑÑ ÐºÐ¾ÑÐºÑ Ð² ÑÑмной комнаÑе, оÑобенно когда ÐµÑ Ñам неÑ.
ЧÑÐ¾Ð±Ñ Ð±Ñло не ÑкÑÑно â иÑполÑзÑйÑе Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ðµ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²ÑÑ Ð´ÐµÐ¹ÑÑвий.
ÐапÑимеÑ, еÑли меÑод показÑÐ²Ð°ÐµÑ ÑÑо-Ñо на ÑкÑане â наÑниÑе его название Ñ display.. (Ñкажем, displayElement), а в дÑÑгом меÑÑе обÑÑвиÑе аналогиÑнÑй меÑод как show.. (showFrame).
Ðак Ð±Ñ Ð½Ð°Ð¼ÐµÐºÐ½Ð¸Ñе ÑÑим, ÑÑо ÑÑÑеÑÑвÑÐµÑ Ñонкое ÑазлиÑие Ð¼ÐµÐ¶Ð´Ñ ÑпоÑобами показа в ÑÑÐ¸Ñ Ð¼ÐµÑÐ¾Ð´Ð°Ñ , Ñ Ð¾ÑÑ Ð½Ð° Ñамом деле его неÑ.
Ðо возможноÑÑи, договоÑиÑеÑÑ Ñ Ñленами Ñвоей командÑ. ÐÑли ÐаÑÑ Ð² ÑвоиÑ
клаÑÑаÑ
иÑполÑзÑÐµÑ display.., Ñо ÐалеÑа â обÑзаÑелÑно render.., а ÐеÑÑ â paint...
â¦Ð напÑоÑив, еÑли еÑÑÑ Ð´Ð²Ðµ ÑÑнкÑии Ñ Ð²Ð°Ð¶Ð½Ñми оÑлиÑиÑми â иÑполÑзÑйÑе одно и Ñо же Ñлово Ð´Ð»Ñ Ð¸Ñ
опиÑаниÑ! ÐапÑимеÑ, Ñ print... можно наÑаÑÑ Ð¼ÐµÑод пеÑаÑи на пÑинÑеÑе printPage, а Ñакже â меÑод Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекÑÑа на ÑÑÑаниÑÑ printText.
Ð ÑепеÑÑ, пÑÑÑÑ ÑиÑаÑÑий код дÑмаеÑ: «ÐÑда же вÑÐ²Ð¾Ð´Ð¸Ñ ÑообÑение printMessage?». ÐÑобÑй Ñик â добавиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾ÑÑи. ÐÑÑÑÑ printMessage вÑÐ²Ð¾Ð´Ð¸Ñ Ð½Ðµ ÑÑда, кÑда вÑе, а в новое окно!
СловаÑÑ ÑеÑминов â ÑÑо еда!
Ðи в коем ÑлÑÑае не поддавайÑеÑÑ ÑÑебованиÑм напиÑаÑÑ ÑловаÑÑ ÑеÑминов Ð´Ð»Ñ Ð¿ÑоекÑа. ÐÑли же он Ñже еÑÑÑ â не ÑледÑйÑе емÑ, а лÑÑÑе пÑоглоÑиÑе и ÑкажиÑе, ÑÑо Ñак и бÑлÐ!
ÐÑÑÑÑ ÑиÑаÑÑий Ð²Ð°Ñ ÐºÐ¾Ð´ пÑогÑаммиÑÑ Ð½Ð°Ð¿ÑаÑно иÑÐµÑ ÑазлиÑÐ¸Ñ Ð² helloUser и welcomeVisitor и пÑÑаеÑÑÑ Ð¿Ð¾Ð½ÑÑÑ, когда ÑÑо иÑполÑзоваÑÑ. ÐÑ-Ñо знаеÑе, ÑÑо на Ñамом деле ÑазлиÑий неÑ, но иÑкаÑÑ Ð¸Ñ
можно о-оÑÐµÐ½Ñ Ð´Ð¾Ð»Ð³Ð¾.
ÐÐ»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑеÑиÑÐµÐ»Ñ Ð² одном меÑÑе иÑполÑзÑйÑе user, а в дÑÑгом visitor, в ÑÑеÑÑем â пÑоÑÑо u. ÐÑбиÑайÑе одно Ð¸Ð¼Ñ Ð¸Ð»Ð¸ дÑÑгое, в завиÑимоÑÑи Ð¾Ñ ÑÑнкÑии и наÑÑÑоениÑ.
ÐÑо воплоÑÐ¸Ñ ÑÑÐ°Ð·Ñ Ð´Ð²Ð° клÑÑевÑÑ Ð¿ÑинÑипа ниндзÑ-дизайна â ÑокÑÑÑие инÑоÑмаÑии и подмена понÑÑий!
ÐовÑоÑно иÑполÑзÑйÑе имена
Ðо возможноÑÑи, повÑоÑно иÑполÑзÑйÑе имена пеÑеменнÑÑ , ÑÑнкÑий и ÑвойÑÑв. ÐÑоÑÑо запиÑÑвайÑе в Ð½Ð¸Ñ Ð½Ð¾Ð²Ñе знаÑениÑ.
ÐобавлÑйÑе новое Ð¸Ð¼Ñ ÑолÑко еÑли ÑÑо абÑолÑÑно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾.
Ð ÑÑнкÑии ÑÑаÑайÑеÑÑ Ð¾Ð±Ð¾Ð¹ÑиÑÑ ÑолÑко Ñеми пеÑеменнÑми, коÑоÑÑе бÑли пеÑÐµÐ´Ð°Ð½Ñ ÐºÐ°Ðº паÑамеÑÑÑ.
ÐÑо не ÑолÑко заÑÑÑÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¸Ñ Ñого, ÑÑо ÑейÑÐ°Ñ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пеÑеменной, но и ÑÐ´ÐµÐ»Ð°ÐµÑ Ð¿Ð¾ÑÑи невозможнÑм поиÑк меÑÑа, в коÑоÑом конкÑеÑное знаÑение бÑло пÑиÑвоено.
Ð¦ÐµÐ»Ñ â макÑималÑно ÑÑложниÑÑ Ð¾ÑÐ»Ð°Ð´ÐºÑ Ð¸ заÑÑавиÑÑ ÑиÑаÑÑего код пÑогÑаммиÑÑа поÑÑÑоÑно анализиÑоваÑÑ ÐºÐ¾Ð´ и конÑпекÑиÑоваÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ веÑки иÑполнениÑ.
ÐÑодвинÑÑÑй ваÑÐ¸Ð°Ð½Ñ ÑÑого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° â незамеÑно (!) подмениÑÑ Ð¿ÐµÑеменнÑÑ Ð½Ð° неÑÑо Ð¿Ð¾Ñ Ð¾Ð¶ÐµÐµ, напÑимеÑ:
function ninjaFunction(elem) {
// 20 ÑÑÑок кода, ÑабоÑаÑÑего Ñ elem
elem = elem.cloneNode(true);
// еÑÑ 20 ÑÑÑок кода, ÑабоÑаÑÑего Ñ elem
}
ÐÑогÑаммиÑÑ, пожелавÑий добавиÑÑ Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ñ elem во вÑоÑÑÑ ÑаÑÑÑ ÑÑнкÑии, бÑÐ´ÐµÑ ÑдивлÑн. ÐиÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¾Ñладки, поÑмоÑÑев веÑÑ ÐºÐ¾Ð´, он Ñ Ñдивлением обнаÑÑжиÑ, ÑÑо оказÑваеÑÑÑ Ð¸Ð¼ÐµÐ» дело Ñ ÐºÐ»Ð¾Ð½Ð¾Ð¼!
РегÑлÑÑнÑе вÑÑÑеÑи Ñ ÑÑим пÑиÑмом на пÑакÑике говоÑÑÑ: заÑиÑиÑÑÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾. ÐÑÑекÑивно даже пÑоÑив опÑÑного ниндзи.
ÐобавлÑйÑе подÑÑÑкиваниÑ
ÐобавлÑйÑе подÑÑÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ _ и __ к именам пеÑеменнÑÑ
. ÐелаÑелÑно, ÑÑÐ¾Ð±Ñ Ð¸Ñ
ÑмÑÑл бÑл извеÑÑен ÑолÑко вам, а лÑÑÑе â вообÑе без Ñвной пÑиÑинÑ.
ÐÑим Ð²Ñ Ð´Ð¾ÑÑигниÑе двÑÑ Ñелей. Ðо-пеÑвÑÑ , код ÑÑÐ°Ð½ÐµÑ Ð´Ð»Ð¸Ð½Ð½ÐµÐµ и менее ÑиÑаемÑм, а во-вÑоÑÑÑ , дÑÑгой пÑогÑаммиÑÑ Ð±ÑÐ´ÐµÑ Ð´Ð¾Ð»Ð³Ð¾ иÑкаÑÑ ÑмÑÑл в подÑÑÑкиваниÑÑ . ÐÑобенно Ñ Ð¾ÑоÑо ÑÑабоÑÐ°ÐµÑ Ð¸ внеÑÑÑ ÑÑмÑÑиÑÑ Ð² его мÑÑли, еÑли в некоÑоÑÑÑ ÑаÑÑÑÑ Ð¿ÑоекÑа подÑÑÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð±ÑдÑÑ, а в некоÑоÑÑÑ â неÑ.
РпÑоÑеÑÑе ÑазвиÑÐ¸Ñ ÐºÐ¾Ð´Ð° вÑ, ÑкоÑее вÑего, бÑдеÑе пÑÑаÑÑÑÑ Ð¸ ÑмеÑиваÑÑ ÑÑили: добавлÑÑÑ Ð¸Ð¼ÐµÐ½Ð° Ñ Ð¿Ð¾Ð´ÑÑÑкиваниÑми Ñам, где обÑÑно подÑÑÑкиваний неÑ, и наобоÑоÑ. ÐÑо ноÑмалÑно и полноÑÑÑÑ ÑооÑвеÑÑÑвÑÐµÑ ÑÑеÑÑей Ñели â ÑвелиÑиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво оÑибок пÑи внеÑении иÑпÑавлений.
ÐокажиÑе ваÑÑ Ð»ÑÐ±Ð¾Ð²Ñ Ðº ÑазÑабоÑке
ÐÑÑÑÑ Ð²Ñе видÑÑ, какими замеÑаÑелÑнÑми ÑÑÑноÑÑÑми Ð²Ñ Ð¾Ð¿ÐµÑиÑÑеÑе! Ðмена superElement, megaFrame и niceItem пÑи благопÑиÑÑном положении звÑзд могÑÑ Ð¿ÑивеÑÑи к пÑоÑвеÑÐ»ÐµÐ½Ð¸Ñ ÑиÑаÑÑего.
ÐейÑÑвиÑелÑно, Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑоÑонÑ, кое-ÑÑо напиÑано: super.., mega.., nice.. С дÑÑгой â ÑÑо не неÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ конкÑеÑики. ЧиÑаÑÑий Ð¼Ð¾Ð¶ÐµÑ ÑеÑиÑÑ Ð¿Ð¾Ð¸ÑкаÑÑ Ð² ÑÑом глÑбиннÑй ÑмÑÑл и замедиÑиÑоваÑÑ Ð½Ð° ÑаÑок-дÑÑгой оплаÑенного ÑабоÑего вÑемени.
ÐеÑекÑÑвайÑе внеÑние пеÑеменнÑе
ÐÐ°Ñ Ð¾Ð´ÑÑÑ Ð½Ð° ÑвеÑÑ, нелÑÐ·Ñ Ð½Ð¸Ñего ÑвидеÑÑ Ð² ÑемноÑе.
ÐÑебÑÐ²Ð°Ñ Ð¶Ðµ в ÑемноÑе, ÑвидиÑÑ Ð²Ñе, ÑÑо Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð½Ð° ÑвеÑÑ.
ÐоÑÐµÐ¼Ñ Ð±Ñ Ð½Ðµ иÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе пеÑеменнÑе внÑÑÑи и ÑнаÑÑжи ÑÑнкÑии? ÐÑо пÑоÑÑо и не ÑÑебÑÐµÑ Ð¿ÑидÑмÑваÑÑ Ð½Ð¾Ð²ÑÑ Ð¸Ð¼Ñн.
var user = authenticateUser();
function render() {
var user = anotherValue();
...
...многобÑкв...
...
... // <-- пÑогÑаммиÑÑ Ð·Ð°Ñ
оÑÐµÑ Ð²Ð½ÐµÑÑи иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑда, и..
...
}
ÐаÑедÑий в ÑеÑÐµÐ´Ð¸Ð½Ñ Ð¼ÐµÑода render пÑогÑаммиÑÑ, ÑкоÑее вÑего, не замеÑиÑ, ÑÑо пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ user локалÑно пеÑекÑÑÑа и попÑÑаеÑÑÑ ÑабоÑаÑÑ Ñ Ð½ÐµÐ¹, полагаÑ, ÑÑо ÑÑо ÑезÑлÑÑÐ°Ñ authenticateUser()⦠ÐовÑÑка заÑ
лопнÑлаÑÑ! ÐдÑавÑÑвÑй, оÑладÑик.
ÐоÑнÑе ÑÑнкÑии!
Ðе огÑаниÑивайÑе дейÑÑÐ²Ð¸Ñ ÑÑнкÑии Ñем, ÑÑо напиÑано в ÐµÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¸. ÐÑдÑÑе ÑиÑе.
ÐапÑимеÑ, ÑÑнкÑÐ¸Ñ validateEmail(email) можеÑ, кÑоме пÑовеÑки e-mail на пÑавилÑноÑÑÑ, вÑводиÑÑ ÑообÑение об оÑибке и пÑоÑиÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ ввеÑÑи e-mail.
ÐÑбеÑиÑе Ñ Ð¾ÑÑ Ð±Ñ Ð¿Ð°ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ Ð´ÐµÐ¹ÑÑвий, кÑоме оÑновного назнаÑÐµÐ½Ð¸Ñ ÑÑнкÑии.
Ðлавное â они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð½ÐµÐ¾ÑÐµÐ²Ð¸Ð´Ð½Ñ Ð¸Ð· Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÑÑнкÑии. ÐÑÑиннÑй ниндзÑ-Ð´ÐµÐ²ÐµÐ»Ð¾Ð¿ÐµÑ ÑÐ´ÐµÐ»Ð°ÐµÑ Ñак, ÑÑо они бÑдÑÑ Ð½ÐµÐ¾ÑÐµÐ²Ð¸Ð´Ð½Ñ Ð¸ из кода Ñоже.
ÐбÑединение неÑколÑÐºÐ¸Ñ ÑмежнÑÑ Ð´ÐµÐ¹ÑÑвий в Ð¾Ð´Ð½Ñ ÑÑнкÑÐ¸Ñ Ð·Ð°ÑиÑÐ¸Ñ Ð²Ð°Ñ ÐºÐ¾Ð´ Ð¾Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑзованиÑ.
ÐÑедÑÑавÑÑе, ÑÑо дÑÑÐ³Ð¾Ð¼Ñ ÑазÑабоÑÑÐ¸ÐºÑ Ð½Ñжно ÑолÑко пÑовеÑиÑÑ Ð°Ð´ÑеÑ, а ÑообÑение â не вÑводиÑÑ. ÐаÑа ÑÑнкÑÐ¸Ñ validateEmail(email), коÑоÑÐ°Ñ Ð´ÐµÐ»Ð°ÐµÑ Ð¸ Ñо и дÑÑгое, ÐµÐ¼Ñ Ð½Ðµ подойдÑÑ. РабоÑодаÑÐµÐ»Ñ Ð±ÑÐ´ÐµÑ Ð²ÑнÑжден оплаÑиÑÑ Ñоздание новой.
Ðнимание⦠СÑÑ-пÑи-из!
ÐÑÑÑ ÑÑнкÑии, название коÑоÑÑÑ
говоÑÐ¸Ñ Ð¾ Ñом, ÑÑо они ниÑего не менÑÑÑ. ÐапÑимеÑ, isReady, checkPermission, findTags⦠ÐÑедполагаеÑÑÑ, ÑÑо пÑи вÑзове они пÑоизведÑÑ Ð½ÐµÐºÐ¸Ðµ вÑÑиÑлениÑ, или найдÑÑ Ð¸ возвÑаÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñе даннÑе, но пÑи ÑÑом иÑ
не изменÑÑ. Ð ÑÑакÑаÑаÑ
ÑÑо назÑваеÑÑÑ Â«Ð¾ÑÑÑÑÑÑвие ÑÑоÑонниÑ
ÑÑÑекÑов».
Ðо-наÑÑоÑÑÐµÐ¼Ñ ÐºÑаÑивÑй пÑиÑм â делаÑÑ Ð² ÑÐ°ÐºÐ¸Ñ ÑÑнкÑиÑÑ ÑÑо-нибÑÐ´Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾Ðµ, заодно Ñ Ð¿ÑоÑеÑÑом пÑовеÑки. ЧÑо именно â ÑовеÑÑенно неважно.
Удивление и оÑеломление, коÑоÑое Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ñ Ð²Ð°Ñего коллеги, когда он ÑвидиÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ на is.., check.. или find... ÑÑо-Ñо менÑÐµÑ â неÑомненно, ÑаÑÑиÑÐ¸Ñ ÐµÐ³Ð¾ гÑаниÑÑ ÑазÑмного!
ÐÑÑ Ð¾Ð´Ð½Ð° ваÑиаÑÐ¸Ñ Ñакого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° â возвÑаÑаÑÑ Ð½ÐµÑÑандаÑÑное знаÑение.
ÐÐµÐ´Ñ Ð¾Ð±ÑеизвеÑÑно, ÑÑо is.. и check.. обÑÑно возвÑаÑаÑÑ true/false. ÐÑодемонÑÑÑиÑÑйÑе оÑигиналÑное мÑÑление. ÐÑÑÑÑ Ð²Ñзов checkPermission возвÑаÑÐ°ÐµÑ Ð½Ðµ ÑезÑлÑÑÐ°Ñ true/false, а обÑÐµÐºÑ Ñ ÑезÑлÑÑаÑами пÑовеÑки! Ð Ñего, полезно.
Те же ÑазÑабоÑÑики, кÑо попÑÑаеÑÑÑ Ð½Ð°Ð¿Ð¸ÑаÑÑ Ð¿ÑовеÑÐºÑ if (checkPermission(..)), бÑдÑÑ Ð²ÐµÑÑма ÑÐ´Ð¸Ð²Ð»ÐµÐ½Ñ ÑезÑлÑÑаÑом. ÐÑвеÑÑÑе им: «надо ÑиÑаÑÑ Ð´Ð¾ÐºÑменÑаÑиÑ!». РпеÑеÑлиÑе ÑÑÑ ÑÑаÑÑÑ.
ÐаклÑÑение
ÐÑе ÑовеÑÑ Ð²ÑÑе пÑиÑли из ÑеалÑного кода⦠Рв Ñом ÑиÑле Ð¾Ñ ÑазÑабоÑÑиков Ñ Ð±Ð¾Ð»ÑÑим опÑÑом.
Ðозможно, даже болÑÑе ваÑего, Ñак ÑÑо не ÑÑдиÑе опÑомеÑÑиво ;)
- СледÑйÑе неÑколÑким из Ð½Ð¸Ñ â и Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑÐ°Ð½ÐµÑ Ð¿Ð¾Ð»Ð¾Ð½ ÑÑÑпÑизов.
- СледÑйÑе многим â и Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑÐ°Ð½ÐµÑ Ð¸ÑÑинно ваÑим, никÑо не Ð·Ð°Ñ Ð¾ÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ ÐµÐ³Ð¾.
- СледÑйÑе вÑем â и Ð²Ð°Ñ ÐºÐ¾Ð´ ÑÑÐ°Ð½ÐµÑ ÑеннÑм ÑÑоком Ð´Ð»Ñ Ð¼Ð¾Ð»Ð¾Ð´ÑÑ ÑазÑабоÑÑиков, иÑÑÑÐ¸Ñ Ð¿ÑоÑвеÑлениÑ.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)