Как называть переменные и функции, чтобы вас уважали бывалые программисты
vk f t

Как называть переменные и функции, чтобы вас уважали бывалые программисты

Если вы опыт­ный раз­ра­бот­чик, пока­жи­те эту ста­тью начи­на­ю­щим.

Зачем как-то по-особому называть переменные и функции

Вам по-любому при­дёт­ся как-то назвать пере­мен­ные и функ­ции. С точ­ки зре­ния язы­ков про­грам­ми­ро­ва­ния, пере­мен­ные могут быть почти любы­ми: хоть a, b и c, хоть SuperImportantVariable3000. То же с функ­ци­я­ми: они могут быть супер­ко­рот­ки­ми типа yo(), а могут быть неве­ро­ят­но замо­ро­чен­ны­ми вро­де getNewPageNumberAndNavigateToThatPage(). Как ска­же­те — так и будет. Тем более что совре­мен­ные тек­сто­вые редак­то­ры дела­ют авто­под­ста­нов­ку всех назва­ний, так что вам даже не при­дёт­ся их запо­ми­нать.

Но есть три момен­та:

Как называть переменные

Когда начи­на­ешь писать код, у тебя про­стые про­грам­мы, к кото­рым нуж­ны про­стые пере­мен­ные: screen, score, text и так далее. Потом про­ек­ты ста­но­вят­ся слож­нее, и пере­мен­ные нуж­ны всё более слож­ные: totalScore, totalScoreBefore, totalScoreAfter, totalScoreMaxProgressiveLimit и тому подоб­ные. Тут надо оста­но­вить­ся и поду­мать вот о чём.

Чем длин­нее назва­ние пере­мен­ной, тем тяже­лее её набрать без оши­бок. Спа­са­ет авто­под­ста­нов­ка, но если её нет — почти навер­ня­ка ваш код не поле­тит из-за опе­чат­ки.

Если вы пише­те на JavaScript, то будет ещё хуже: так как он гене­ри­ру­ет пере­мен­ные на ходу, ошиб­ка в пере­мен­ной totalScoreMaxProgresLimit у него не вызо­вет подо­зре­ний. Он создаст новый эле­мент с этим назва­ни­ем, и у вас будут две пере­мен­ные — одна пра­виль­ная, дру­гая непра­виль­ная. Про­грам­ма запу­стит­ся, но рабо­тать будет непред­ска­зу­е­мо.

Поэто­му стре­ми­тесь выби­рать корот­кие назва­ния пере­мен­ных, кото­рые при этом понят­ны без глу­бо­ко­го вни­ка­ния. Напри­мер, totalScore — ито­го­вый счёт в игре, maxWidth — мак­си­маль­ная шири­на. Если есть необ­хо­ди­мость хра­нить мно­го пере­мен­ных на раз­ных полоч­ках, в груп­пах или еще какими-то пач­ка­ми, изу­чи­те поня­тия объ­ек­тов и клас­сов в JavaScript — это то, что вам нуж­но.

Как называть функции

Функ­ция — это под­про­грам­ма внут­ри вашей про­грам­мы, кото­рую вы часто исполь­зу­е­те. Напри­мер, мож­но напи­сать функ­цию getNumber(), кото­рая будет выда­вать слу­чай­ное чис­ло в нуж­ном вам диа­па­зоне. Или ска­зать setTimer() — и где-то внут­ри про­грам­мы уста­но­вит­ся тай­мер, кото­рый выпол­нит то, что необ­хо­ди­мо, по завер­ше­нии отсчё­та вре­ме­ни.

Функ­ция может про­сто сде­лать свою рабо­ту, а может вер­нуть при этом какое-то зна­че­ние, пере­мен­ную, мас­сив или объ­ект. Напри­мер, мож­но дать под­про­грам­ме стро­ку тек­ста, напи­сать алго­ритм пере­во­да на ино­стран­ный язык, и она будет воз­вра­щать пере­ве­дён­ный текст.

У функ­ций тоже могут быть какие угод­но назва­ния. Но обыч­но они будут при­мер­но таки­ми:

Вы заме­ти­те, что из назва­ния функ­ции мож­но понять, что она сде­ла­ет и сооб­щит ли какой-то резуль­тат. Напри­мер, getScore() вер­нёт счёт игры, setScore() задаст счёт игры и ниче­го не вер­нёт, а clearScore() обну­лит счёт игры и тоже ниче­го не вер­нёт.

А что с заглавными буквами?

В про­грам­ми­ро­ва­нии есть два под­хо­да к оформ­ле­нию функ­ций и пере­мен­ных: camelCase и snake_case.

В camelCase пере­мен­ные из несколь­ких слов соеди­ня­ют­ся без про­бе­ла, все новые сло­ва пишут­ся с заглав­ной: getMoney, renderToFrame, removeFromBase и т. д. Этот под­ход реко­мен­ду­ет­ся в JavaScript. Обра­ти­те вни­ма­ние: назва­ния пере­мен­ных и функ­ций в JavaScript чув­стви­тель­ны к заглав­ным, то есть пере­мен­ные getmoney и getMoney — это раз­ные пере­мен­ные.

Snake_case — это когда сло­ва скле­и­ва­ют­ся ниж­ним под­чер­ки­ва­ни­ем. Это чаще исполь­зу­ют в клас­сах CSS. При­ме­ры: header_marginal, form_success.

Выби­рай­те тот под­ход, кото­рый харак­те­рен для выбран­но­го вами язы­ка. Помни­те, что потом ваш код будут читать дру­гие люди, и видеть необыч­но назван­ные функ­ции и пере­мен­ные им будет тяже­ло­ва­то.

Как не надо называть ни переменные, ни функции

Про­грам­ми­сты не сове­ту­ют назы­вать пере­мен­ные и функ­ции кре­а­тив­но, напри­мер crazyUnicorn или wonderfulWorld(). Из назва­ний этих функ­ций непо­нят­но, что они дела­ют, воз­вра­ща­ют ли они что-то и вооб­ще зачем нуж­ны.

Но, напри­мер, unicornCount — нор­маль­ная пере­мен­ная с коли­че­ством еди­но­ро­гов. А initWorld() — функ­ция, кото­рая созда­ёт мир ком­пью­тер­ной игры.

Не назы­вай­те функ­ции и пере­мен­ные сло­ва­ми function или variable. MyVar и superFunction() — пло­хие вари­ан­ты, пото­му что вы сами же через две неде­ли забу­де­те, что эти шту­ки дела­ют.

Луч­ше не назы­вать функ­ции и пере­мен­ные по-русски типа solnce или KYCb() — забу­де­те потом, как они пра­виль­но пишут­ся. А когда ваша про­грам­ма ста­нет меж­ду­на­род­но при­знан­ной, раз­ра­бот­чи­ки побла­го­да­рят вас. При этом: если ваша функ­ция дела­ет «кусь», что­бы это ни зна­чи­ло, ее мож­но назвать bite() или getPiece().

Не делай­те назва­ния слиш­ком сек­рет­ны­ми: пере­мен­ные p, m, t, z или функ­ция hm() — это слиш­ком корот­ко. Исклю­че­ние — когда вы пише­те цик­лы: там исполь­зу­ют­ся пере­мен­ные типа i, n, p — с их помо­щью счи­та­ют, сколь­ко раз цикл уже отра­бо­тал. Но эти пере­мен­ные созда­лись, испол­ни­ли свою роль и уни­что­жи­лись сра­зу после закры­тия цик­ла, боль­ше к ним не обра­ща­ют­ся.

Общее пра­ви­ло: назы­вай­те пере­мен­ные и функ­ции так, как буд­то их будут читать совер­шен­но незна­ко­мые люди. Буд­то зав­тра вам в отпуск, а за вас код будет доде­лы­вать ваш кол­ле­га из Индии. Он дол­жен понять ваши пере­мен­ные и функ­ции. Если смо­же­те так сде­лать — вас ото­рвут с рука­ми в любой ком­па­нии.

Ещё по теме