1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке мы поговорим об именовании. Изучать эту тему мы начнем с примера. Посмотрим на такую программу:</p>
1
<p>В этом уроке мы поговорим об именовании. Изучать эту тему мы начнем с примера. Посмотрим на такую программу:</p>
2
<p>Она работает, но в ней странное имя переменной - $x. Компьютеру без разницы, как мы называем переменные, но вот программистам - нет. Мы гораздо реже пишем код, чем его читаем. Причем часто приходится читать не свой код, а написанный другими людьми. От качества и понятности имен переменных зависит половина успеха в анализе кода.</p>
2
<p>Она работает, но в ней странное имя переменной - $x. Компьютеру без разницы, как мы называем переменные, но вот программистам - нет. Мы гораздо реже пишем код, чем его читаем. Причем часто приходится читать не свой код, а написанный другими людьми. От качества и понятности имен переменных зависит половина успеха в анализе кода.</p>
3
<p>Лучше посидеть и придумать название, которое хорошо описывает суть переменной, чем назвать ее как попало и в будущем переделывать. Постарайтесь давать им такие имена, чтобы они были максимально понятны без контекста и без изучения окружающего кода.</p>
3
<p>Лучше посидеть и придумать название, которое хорошо описывает суть переменной, чем назвать ее как попало и в будущем переделывать. Постарайтесь давать им такие имена, чтобы они были максимально понятны без контекста и без изучения окружающего кода.</p>
4
-
<p>Среди разработчиков есть шутка: "самое сложное в программировании - названия переменных и инвалидация кеша". Придумывать названия и правда сложно. Например, какое бы название вы бы выбрали для переменной, в которой хранится количество неоплаченных заказов от клиентов, имеющих задолженность в предыдущем квартале?</p>
4
+
<p>Среди разработчиков есть шутка: "самое сложное в программировании - названия переменных и инвалидация кеша". Придумывать названия и правда сложно. Например, какое бы название вы бы выбрали для переменной, в которой хранится количество неоплаченных заказов от клиентов, имеющих задолженность в предыдущ��м квартале?</p>
5
<p>Чтобы глубже погрузиться в тему, попробуйте выполнить дополнительное задание - придумайте название для переменной, в которой хранится "количество братьев и сестер короля". Запишите его в блокноте или отправьте себе на почту. Не указывайте там ничего, кроме названия переменной. А через несколько уроков мы вернемся к этой теме.</p>
5
<p>Чтобы глубже погрузиться в тему, попробуйте выполнить дополнительное задание - придумайте название для переменной, в которой хранится "количество братьев и сестер короля". Запишите его в блокноте или отправьте себе на почту. Не указывайте там ничего, кроме названия переменной. А через несколько уроков мы вернемся к этой теме.</p>
6
<h2>Именование переменных</h2>
6
<h2>Именование переменных</h2>
7
<p>Некоторые имена довольно просты - например, $greeting. Но часто все не так очевидно. Довольно часто имена составные, то есть включают в себя несколько слов. Например, "имя пользователя". В разных языках применяются разные стили кодирования, и имя переменной будет отличаться.</p>
7
<p>Некоторые имена довольно просты - например, $greeting. Но часто все не так очевидно. Довольно часто имена составные, то есть включают в себя несколько слов. Например, "имя пользователя". В разных языках применяются разные стили кодирования, и имя переменной будет отличаться.</p>
8
<p>В именовании переменных можно выделить четыре основных подхода, которые иногда комбинируют друг с другом. Все эти подходы проявляют себя, когда имя переменной состоит из нескольких слов:</p>
8
<p>В именовании переменных можно выделить четыре основных подхода, которые иногда комбинируют друг с другом. Все эти подходы проявляют себя, когда имя переменной состоит из нескольких слов:</p>
9
<ul><li>kebab-case - составные части переменной разделяются дефисом (my-super-var)</li>
9
<ul><li>kebab-case - составные части переменной разделяются дефисом (my-super-var)</li>
10
<li>snake_case - для разделения используется подчеркивание (my_super_var)</li>
10
<li>snake_case - для разделения используется подчеркивание (my_super_var)</li>
11
<li>CamelCase - каждое слово в переменной пишется с заглавной буквы (MySuperVar)</li>
11
<li>CamelCase - каждое слово в переменной пишется с заглавной буквы (MySuperVar)</li>
12
<li>lowerCamelCase - каждое слово в переменной пишется с заглавной буквы, кроме первого (mySuperVar)</li>
12
<li>lowerCamelCase - каждое слово в переменной пишется с заглавной буквы, кроме первого (mySuperVar)</li>
13
</ul><p>В PHP используется CamelCase и его вариация lowerCamelCase, при котором первая буква первого слова - строчная. Именно lowerCamelCase применяется для переменных. Это значит, что имена соединяются друг с другом, при этом все имена кроме первого становятся с заглавной буквы: $userName. С тремя словами это выглядит так: $mySuperVariable.</p>
13
</ul><p>В PHP используется CamelCase и его вариация lowerCamelCase, при котором первая буква первого слова - строчная. Именно lowerCamelCase применяется для переменных. Это значит, что имена соединяются друг с другом, при этом все имена кроме первого становятся с заглавной буквы: $userName. С тремя словами это выглядит так: $mySuperVariable.</p>
14
<p>Другое общепринятое правило гласит - не используйте транслит для имен, только английский язык. Если вы испытываете сложности с английским, то пользуйтесь переводчиком. Со временем, копаясь в чужом коде, вы сформируете правильные представления об именовании.</p>
14
<p>Другое общепринятое правило гласит - не используйте транслит для имен, только английский язык. Если вы испытываете сложности с английским, то пользуйтесь переводчиком. Со временем, копаясь в чужом коде, вы сформируете правильные представления об именовании.</p>
15
<p>Названия должны не только передавать смысл, но и соответствовать синтаксическим правилам, которые обычно никак не проверяются на уровне языка, но нужны во время разработки. Процесс написания программ в современном мире - коллективная работа, и для лучшего взаимодействия в команде код пишется в едином стиле, как если бы над ним работал один человек.</p>
15
<p>Названия должны не только передавать смысл, но и соответствовать синтаксическим правилам, которые обычно никак не проверяются на уровне языка, но нужны во время разработки. Процесс написания программ в современном мире - коллективная работа, и для лучшего взаимодействия в команде код пишется в едином стиле, как если бы над ним работал один человек.</p>
16
<p>В каждом языке свои правила. Относительно недавно в PHP появился общепринятый<a>стандарт кодирования</a>, к которому все так или иначе стремятся. Подобные стандарты описывают множество аспектов. Советуем с самого начала завести привычку заглядывать в стандарт и писать код в соответствии с ним.</p>
16
<p>В каждом языке свои правила. Относительно недавно в PHP появился общепринятый<a>стандарт кодирования</a>, к которому все так или иначе стремятся. Подобные стандарты описывают множество аспектов. Советуем с самого начала завести привычку заглядывать в стандарт и писать код в соответствии с ним.</p>
17
<p>К счастью, сегодня не нужно помнить все правила из стандарта, потому что существуют специальные программы, которые проверяют код автоматически и сообщают о нарушениях. Такие программы называются<strong>линтерами</strong>, и вы начнете их использовать немного позже, когда у вас появится чуть больше опыта.</p>
17
<p>К счастью, сегодня не нужно помнить все правила из стандарта, потому что существуют специальные программы, которые проверяют код автоматически и сообщают о нарушениях. Такие программы называются<strong>линтерами</strong>, и вы начнете их использовать немного позже, когда у вас появится чуть больше опыта.</p>
18
<h2>Именование функций</h2>
18
<h2>Именование функций</h2>
19
<p>Стиль именования функций в PHP такой же, как и стиль именования переменных:<em>lowerCamelCase</em>. Но при выборе самих слов есть важное отличие.</p>
19
<p>Стиль именования функций в PHP такой же, как и стиль именования переменных:<em>lowerCamelCase</em>. Но при выборе самих слов есть важное отличие.</p>
20
<p>В большинстве случаев, функция - это действие. Вызов функции всегда подобен указанию "сходи", "возьми", "напечатай", "положи" и так далее. Вспомните, какие функции были в предыдущих уроках:</p>
20
<p>В большинстве случаев, функция - это действие. Вызов функции всегда подобен указанию "сходи", "возьми", "напечатай", "положи" и так далее. Вспомните, какие функции были в предыдущих уроках:</p>
21
<ul><li>showDate ("показать дату")</li>
21
<ul><li>showDate ("показать дату")</li>
22
<li>sub (subtract - "вычесть")</li>
22
<li>sub (subtract - "вычесть")</li>
23
<li>print_r ("напечатать")</li>
23
<li>print_r ("напечатать")</li>
24
<li>round ("округлить")</li>
24
<li>round ("округлить")</li>
25
<li>gettype ("получить тип")</li>
25
<li>gettype ("получить тип")</li>
26
</ul><p>В отличие от функции, переменная - сущность. Поэтому мы используем существительные:</p>
26
</ul><p>В отличие от функции, переменная - сущность. Поэтому мы используем существительные:</p>
27
<ul><li>$child ("ребенок")</li>
27
<ul><li>$child ("ребенок")</li>
28
<li>$result ("результат")</li>
28
<li>$result ("результат")</li>
29
<li>$euros ("евро")</li>
29
<li>$euros ("евро")</li>
30
</ul><p>Берите на вооружение следующую структуру: функция - глагол, переменная - существительное.</p>
30
</ul><p>Берите на вооружение следующую структуру: функция - глагол, переменная - существительное.</p>
31
<p>Жизнь программиста наполнена такими моментами, в которые нужно открыть старый код и попытаться понять его. Чтобы вам и вашим коллегам было удобнее, давайте переменным и функциям понятные названия.</p>
31
<p>Жизнь программиста наполнена такими моментами, в которые нужно открыть старый код и попытаться понять его. Чтобы вам и вашим коллегам было удобнее, давайте переменным и функциям понятные названия.</p>
32
<h2>Магические числа</h2>
32
<h2>Магические числа</h2>
33
<p>Посмотрим еще раз на код:</p>
33
<p>Посмотрим еще раз на код:</p>
34
<p>С точки зрения профессиональной разработки, такой код не соответствует<strong>лучшим практикам</strong>(<em>best practices</em>).</p>
34
<p>С точки зрения профессиональной разработки, такой код не соответствует<strong>лучшим практикам</strong>(<em>best practices</em>).</p>
35
<p>Уже сейчас, глядя на числа 60 и 1.25, вы скорее всего задаетесь вопросом: "Что это за числа?". Если человек видит код в первый раз, он не поймет, откуда числа взялись. В нашем примере контекст восстанавливается благодаря грамотному именованию, но в реальной жизни код значительно сложнее, и поэтому догадаться до смысла чисел зачастую невозможно.</p>
35
<p>Уже сейчас, глядя на числа 60 и 1.25, вы скорее всего задаетесь вопросом: "Что это за числа?". Если человек видит код в первый раз, он не поймет, откуда числа взялись. В нашем примере контекст восстанавливается благодаря грамотному именованию, но в реальной жизни код значительно сложнее, и поэтому догадаться до смысла чисел зачастую невозможно.</p>
36
<p>Эту проблему вызывают<strong>магические числа</strong>(<em>magic numbers</em>). Так называют числа, происхождение которых невозможно понять без глубокого знания этого кода.</p>
36
<p>Эту проблему вызывают<strong>магические числа</strong>(<em>magic numbers</em>). Так называют числа, происхождение которых невозможно понять без глубокого знания этого кода.</p>
37
<p>Выход из ситуации прост - достаточно создать переменные с правильными именами, и так все встанет на свои места:</p>
37
<p>Выход из ситуации прост - достаточно создать переменные с правильными именами, и так все встанет на свои места:</p>
38
<p>Обратите внимание на следующие детали в этом примере:</p>
38
<p>Обратите внимание на следующие детали в этом примере:</p>
39
<ul><li>Мы использовали именование lowerCamelCase</li>
39
<ul><li>Мы использовали именование lowerCamelCase</li>
40
<li>Две новые переменные отделены от последующих вычислений пустой строчкой. Эти переменные имеют смысл и без вычислений, поэтому такое отделение уместно, оно повышает читаемость</li>
40
<li>Две новые переменные отделены от последующих вычислений пустой строчкой. Эти переменные имеют смысл и без вычислений, поэтому такое отделение уместно, оно повышает читаемость</li>
41
</ul><p>У нас получился хорошо именованный и структурированный код, но он длиннее прошлой версии. Так часто бывает, и это нормально, потому что код должен быть читабельным.</p>
41
</ul><p>У нас получился хорошо именованный и структурированный код, но он длиннее прошлой версии. Так часто бывает, и это нормально, потому что код должен быть читабельным.</p>