Имя программы или переменной

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

code-complete-outlines / chapter_11.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
130 lines (85 sloc) 12.1 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

Сила имён переменных

Выбор хороших имён переменных — одно из главных условий понятности программы.

Общие принципы выбора имён переменных

  • Имя должно полно и точно описывать сущность, представляемую переменной
  • Имя переменной должно характеризовать сущность/проблему, а не испекты её реализации/решения
  • Длина имени пременной должна быть оптимальной: в среднем 10-16 символов
  • Если имя короче, проверьте его ясность
  • Если имя длинее, подумайте, нельзя ли его сократить
  • Например, имя переменной i допустимо для счётчика цикла, но не для глобальной переменной
  • Если переменная является глобальной, следует использовать пространства имён, пакеты или префиксы для предотвращения конфликта имён

Именование конкретных типов данных

Переменные. Способы объявления. Правила именования. C++ для начинающих. Урок #5.

Как правило, в качестве индексов циклов используют переменные i, j и k (с. 257)

Но, если цикл длиннее нескольких строк или содержит сложную логику, смысл переменной i легко забыть, поэтому в подобной ситуации лучше использовать более выразительное имя.

Переменные статуса (флаги) характеризуют состояние программы. Но в имени не стоит использовать слово flag , гораздо важнее, чтобы имя ясно говорило о том, какое состояние оно отражает. Например, is_data_ready гораздо лучше, чем ready_flag или data_flag .

Временные переменные служат для хранения промежуточных результатов вычислений, но не стоит пренебрегать их именованием и использовать имя temp . Лучше использовать точные описательные имена, как и в других случаях.

Булевы переменные (booleans)

  • Имя для булевой переменной должно подразумевать значение true или false . Можно дополнять имена для булевых переменных префиксом is , чтобы избежать появления неопределённых имён ( is_done , is_error , is_found и так далее)
  • Типичные имена булевых переменных: done , error , found , success или ok и так далее
  • Стоит использовать утвердительные имена для булевых переменных ( found , а не not_found ), чтобы избежать путаницы при использовании логического отрицания

Если в вашем языке программирования (например, в Python) перечисления реализованы как классы, то при обращении именам членов перечисления будет предшествовать имя самого перечисления, например, Color.Red .

Если это не так, то имена членов перечисления следует дополнять префиксом, чтобы указать к какому перечислению они принадлежат, например Color_Red . Также, сами перечисления можно дополнить префиксом e_ , чтобы явно указать и на их тип, например e_Color .

Стоит ли использовать верхний регистр при именовании членов перечислений? И да, и нет. Да, потому что члены перечисления в сущности являются константами. Нет, потому что перечисление является пользовательским типом и должно форматироваться как обычный класс. В этом вопросе стоит положиться на те конвенции, которых принято придерживаться в вашем языке (например, в Python используется верхний регистр) и в вашем проекте.

Имя константы должно характеризовать абстрактную сущность, представляемую константой, а не конкретное значение (с. 263)

Например, CYCLES_NEEDED = 5 лучше, чем FIVE = 5 .

Сила конвенций именования

Сила конвенций именований объясняется не конкретными аспектами, а самим фактом их использования, обеспечивающим структурирование кода и уменьшающим количество поводов для беспокойства (с. 264)

Ключевые причины для использования конвенций именования:

  • Над проектом работают несколько разработчиков,
  • Программа так велика, что работать можно только с её отдельными частями,
  • Программа будет использоваться и развиваться длительное время.

✅ В любом случае, наличие хоть какой-то конвенции обычно предпочтительнее, чем её отсутствие.

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

  • суть переменной,
  • тип данных,
  • область видимости переменной

Некоторые рекомендации по именованию переменных:

  • Покажите различие между именами переменных и именами методов
  • Покажите различие между классами и объектами
  • Идентифицируйте глобальные переменные
  • Идентифицируйте переменные-члены класса
  • Идентифицируйте именованные константы
  • Идентифицируйте перечисления (enums) и их элементы
  • Форматируйте имена так, чтобы их было легко читать
Читайте также:
Компьютерная модель это компьютерная программа работающая

Стандартизация префиксов обеспечивает лаконичный и согласованный способ именования данных.

Стандартизированный префикс состоит из двух частей: аббревиатуры типа, определённого пользователем (user-defined type, UDT), и семантического префикса (с. 272)

Аббревиатура UTD обозначает тип объекта или переменной. Например, для типа Document мы можем использовать аббревиатуру doc , а для параграфа — pa .

Семантический префикс дополняет UTD, характеризуя использование переменной или объекта. Например, для первого элемента массива можно использовать аббревиатуру first , а для глобальных переменных — g .

Тогда, чтобы обозначить первый абзац активного документа, можно использовать имя first_pa_active_document или firstPaActiveDocument .

. современные языки позволяют создавать имена почти любой длины, поэтому сокращение выразительных имён уже не имеет под собой практически никаких оснований (с. 274)

Тем не менее, полезно знать несколько методик сокращения имёню:

  • Используйте стандартные аббревиатуры
  • Удаляйте гласные, которые не являются первой буквой, то есть computer становится cmptr
  • Удаляйте из имени артикли и союзы
  • Всегда сохраняйте одну или несколько первых букв каждого слова
  • Сохраняйте первую и последнюю буквы каждого слова
  • Сохраняйте наиболее выразительный звук каждого слова
  • Сохраняйте до трёх выразительных слов

Использовать можно один подход или несколько. Главное — делать это согласованно.

Каких принципов стоит придерживаться при сокращении имён?

  • Удаляйте более одного символа или пишите всё слово
  • Всегда используйте один вариант сокращения
  • Выбирайте сокращённое имя, которое можно легко произнести по телефону
  • Не допускайте конфликтов имён
  • Документируйте очень короткие имена в комментариях
  • Документирйте все сокращения в специальном документе внутри репозитория

Каких имён следует избегать?

  • Избегайте обманчивых, двусмысленных имён
  • Избегайте имён, имеющих похожие значения (например, record_num и num_records )
  • Избегайте переменных, имеющих разную суть, но похожие имена (например, client_recs и client_reps )
  • Избегайте имён, имеющих похожее звучание (например, goal_donor и gold_owner )
  • Избегайте имён с цифрами
  • Избегайте имён, содержащих символы, которые можно спутать друг с другом (например, GRAND_TOTAL и GRAND_T0TAL )

Источник: github.com

Практическое руководство по именованию классов, функций и переменных

В компьютерном программировании соглашение об именах — набор правил для выбора последовательности символов, которая будет использоваться для идентификаторов, которые обозначают переменные, типы, функции и другие объекты в исходном коде и документации, — «Википедия»

Придумывать названия сложно!

В этой статье мы сосредоточимся на методе именования (P)A/HC/LC для того, чтобы улучшить читаемость кода. Эти рекомендации можно применить к любому языку программирования, в статье для примеров кода используется JavaScript.

Что значит (P)A/HC/LC?

В этой практике используется следующий шаблон для именования функции:

префикс? (P) + действие (A) + высокоуровневый контекст (HC) + низкоуровневый контекст? (LC)

Что обозначает префикс (P)?

Префикс расширяет смысл функции.

Описывает свойство или состояние текущего контекста (обычно — логическое значение).

const color = ‘blue’; const isBlue = (color === ‘blue’); // свойство const isPresent = true; // состояние if (isBlue isPresent)

Указывает, имеет ли текущий контекст определенное значение или состояние (обычно — логическое значение).

/* Плохо */ const isProductsExist = (productsCount > 0); const areProductsPresent = (productsCount > 0); /* Хорошо */ const hasProducts = (productsCount > 0);
— should

Отражает положительный условный оператор (обычно — логическое значение), связанный с определенным действием.

const shouldUpdateUrl = (url, expectedUrl) => url !== expectedUrl;

Действие — это сердце функции

Действие — это глагольная часть имени функции. Это самая важная часть в описании того, что делает функция.

Получает доступ к данным немедленно (сокращение от getter для внутренних данных).

function getFruitsCount()

Безусловно присваивает переменной со значением A значение B.

let fruits = 0; const setFruits = (nextFruits) => < fruits = nextFruits; >; setFruits(5); console.log(fruits); // 5
— reset

Возвращает переменную к её начальному значению или состоянию.

const initialFruits = 5; let fruits = initialFruits; setFruits(10); console.log(fruits); // 10 const resetFruits = () => < fruits = initialFruits; >; resetFruits(); console.log(fruits); // 5
— fetch

Выполняет запрос данных, для которого требуется время (например, асинхронный запрос).

const fetchPosts = (postCount) => fetch(‘https://api.dev/posts’, );
— remove

Удаляет что-то откуда-то.

Например, если у вас есть коллекция выбранных фильтров на странице поиска, удаление одного из них из коллекции — это removeFilter , а не deleteFilter (именно так вы и скажете на английском языке):

const removeFilter = (filterName, filters) => filters.filter((name) => name !== filterName); const selectedFilters = [‘price’, ‘availability’, ‘size’]; removeFilter(‘price’, selectedFilters);
— delete

Полностью стирает что-то. После операции сущность перестаёт существовать.

Представьте, что вы редактор контента, и есть пост, от которого вы хотите избавиться. Как только вы нажали на кнопку delete-post, CMS выполнила действие deletePost , а не removePost .

Читайте также:
Что входит в процесс тестирования программы

const deletePost = (id) => database.find(< id >).delete();
— compose

Создает новые данные из существующих. Обычно это применимо к строкам, объектам или функциям.

const composePageUrl = (pageName, pageId) => `$-$`;
— handle

Обработка действия. Часто используется при именовании обратного вызова.

const handleLinkClick = () => < console.log(‘Clicked a link!’); >; link.addEventListener(‘click’, handleLinkClick);

Контекст

Контекст — это область, с которой работает функция.

Функция — это часто действие с чем-то. Важно указать, какова её рабочая область или, по крайней мере, ожидаемый тип данных.

/* Чистая функция, работающая с примитивами */ const filter = (list, predicate) => list.filter(predicate); /* Функция, работающая непосредственно с сообщениями */ const getRecentPosts = (posts) => filter(posts, (post) => post.date === Date.now()); /* Некоторые специфические для языка допущения позволяют опустить контекст. Например, в JavaScript фильтр обычно работает с массивом (Array). Добавление явного filterArray будет избыточным. */

В итоге

Пять принципов именования переменных

В этом разделе мы предложим некоторые правила именования переменных, которые улучшат читаемость кода.

1. Следуйте S-I-D

Имя должно быть коротким (Short), интуитивно понятным (Intuitive) и описательным (Descriptive).

/* Плохо */ const a = 5; // «a» может обозначать что угодно const isPaginatable = (postsCount > 10); // «Paginatable» звучит крайне неестественно const shouldPaginatize = (postsCount > 10); // Придуманные глаголы — это так весело! /* Хорошо */ const postsCount = 5; const hasPagination = (postsCount > 10); const shouldDisplayPagination = (postsCount > 10); // альтернатива

2. Избегайте сокращений

Не используйте сокращения. Обычно они только ухудшают читаемость кода. Найти короткое, описательное имя может быть сложно, но сокращения не могут быть оправданием для того, чтобы этого не делать. Например:

/* Плохо */ const onItmClk = () => <>; /* Хорошо */ const onItemClick = () => <>;

3. Избегайте дублирования контекста

Всегда удаляйте контекст из имени, если это не снижает его читабельность.

class MenuItem < /* Имя метода дублирует контекст (которым является «MenuItem») */ handleMenuItemClick(event) < . >/* Читается как MenuItem.handleClick() */ handleClick(event) < . >>

4. Отражайте в имени ожидаемый результат

/* Плохо */ const isEnabled = (itemsCount > 3); return /> /* Хорошо */ const isDisabled = (itemsCount />

5. Учитывайте единственное/множественное число

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

/* Плохо */ const friends = ‘Bob’; const friend = [‘Bob’, ‘Tony’, ‘Tanya’]; /* Хорошо */ const friend = ‘Bob’; const friends = [‘Bob’, ‘Tony’, ‘Tanya’];

6. Используйте осмысленные и произносимые имена

/* Просто ужасно */ const yyyymmdstr = moment().format(«YYYY/MM/DD»); /* Гораздо лучше */ const currentDate = moment().format(«YYYY/MM/DD»);

  • Программирование
  • Совершенный код

Источник: habr.com

Что такое переменная в программировании (Delphi, C#, PHP, JavaScript, Python)?

Переменная в языке программирования

Всем привет друзья. Сейчас я расскажу вам о переменных: что такое переменные в программировании, зачем они нужны и как их использовать.

Это будет обобщающий урок, и то что я буду рассказывать и показывать в этой статье и видео к ней, применимо ко всем языкам программирования. Не важно, что вы сейчас изучаете: Delphi, C#, PHP, JavaScript, Python, или какой-нибудь другой язык программирования. То что я расскажу в этом уроке, будет применимо абсолютно к любому языку программирования.

Что такое переменная в программировании

Переменная — это определенная ячейка памяти, в которую можно записать различные значения. Как правило, этой ячейке памяти устанавливают какое-нибудь имя.

Переменную в программировании можно сравнить с ящиком для игрушек.

Например, у нас есть ящик. И на этот ящик мы нанесем наклейку «Игрушки» на английском «Toys». Теперь мы знаем, что этот ящик у нас предназначен для игрушек и в него мы будем помещать только их.

Если мы положим в наш ящик игрушку (например, мишку), то мы присвоим переменной значение. В переменной Toys будет храниться Мишка (Bear).

На практике в программировании это выглядит так:

На языке Delphi

procedure TForm1.Button1Click(Sender: TObject); var toys: string; // объявляем переменную. Тип переменной — строка begin toys := ‘Мишка’; // присваиваем переменной значение Мишка ShowMessage(toys); // выводим на экран значение переменной toys end;

На языке PHP

На языке JavaScript

let toys = «Мишка»; // определяем переменную и присваиваем ей значение alert(toys); //выводим на экран во всплавающем окне значение переменной

На языке C#

using System; namespace ConsoleApp1 < class Program < static void Main(string[] args) < string toys = «Мишка»; // инициализируем переменную toys и присваиваем ей значение. Тип переменной — строка Console.WriteLine(toys); // выводим в консоли значение переменной toys Console.Read(); >> >

Читайте также:
Паттерн стратегия с пример программы

На языке Python

>>> toys = ‘Мишка’; #создаем переменную и присваиваем ей значение >>> print(toys); #выводим на экран значение переменной

Значение переменной можно копировать и менять. Например, если у нас будет еще один ящик «Вещи» (Things), то мы можем в него положить наш ящик «Игрушки» (Toys). И теперь в нашем ящике «Вещи» будет находится «Мишка».

На практике это выглядит так: (Далее пример я буду наводить только на языке JavaScript, потому что принцип работы с переменными идентичен и для Delphi, и для C#, и для PHP, и для Python. И в обычном блокноте вы можете создать файл с расширением html и повторять всё за мной.)

Код JavaScript:

let toys = «Мишка»; // определяем переменную и присваиваем ей значение let things = toys; // создаем переменную things и присваиваем ей значение переменной toys alert(things); //выводим на экран во всплывающем окне значение переменной things

Если мы достанем из ящика «Игрушки» (Toys) нашего мишку и положим в него кролика «Bunny», то и в ящике «Вещи» (Things) у нас теперь буде кролик (Bunny).

Код JavaScript:

let toys = «Кролик»; // определяем переменную и присваиваем ей значение let things = toys; // создаем переменную things и присваиваем ей значение переменной toys alert(things); //выводим на экран во всплывающем окне значение переменной things

Переменным можно присваивать результаты каких-то вычислений. Если говорить о числах, то их можно складывать, вычитать, умножать и делить. Строки также можно складывать.

Например, у нас есть два ящика (две переменные). В одном у нас кролик, а в другом — мишка. Если мы эти два ящика положим в ящик «Вещи», то теперь в ящике «Вещи» будут и кролик, и мишка.

На практике это выглядит так:

Код JavaScript:

let bear = ‘Мишка’; // создаем переменную и присваиваем ей значение Мишка let bunny = ‘Кролик’; // создаем вторую переменную и присваиваем ей значение let things = ‘Здесь ‘ + bear + ‘ и ‘ + bunny; // создаем переменную и складываем первую и вторую переменную alert(things); // выводим во всплывающем окне результат (значение переменной things)

Ну и давайте рассмотрим пример работы с числами.

Код JavaScript:

let a,b,c,total; // создаем переменные для произведения математических операций // присваиваем значение переменным a=1; b=5; c=2; // сложим переменные total=a+b+c; // должно получиться 8 alert(total); // выводим на экран результат. Заодно и проверим

Как видите ничего сложного в этом нет.

Имя переменной

Имя переменной может состоять как из одной, так и из нескольких букв. Например, можно задать имя переменной Toys (Игрушки), или MyToys (Мои игрушки). Также можно использовать числа при определении переменной. Например, toy1, toy2, toy3 и т.д.

Важно знать, что когда вы указываете имя переменной, нужно использовать только английские буквы и нельзя использовать пробелы.

Также нельзя использовать зарезервированные слова. У каждого языка программирования они свои и для раскрытия этой темы нужно делать отдельный урок по переменным в каждом из этих языков программирования.

Еще очень важно назначать переменным осмысленные имена. Потому что когда вы будете создавать большие проекты (программы), то в последствии вам будет легче понимать свой код. Вы легко вспомните, что означает та, или иная переменная. Ведь если вы дадите переменным имена i, b, f, Str1, то спустя некоторое время вы забудете для чего объявляли именно эти переменные, и будет очень тяжело понять, что они означают. А вот когда вы видите имя переменной Toys, то вы сразу понимаете, что хранится в этой переменной (в нашем случае — игрушки).

Ну и для закрепления этой темы, давайте я еще покажу как по ходу выполнения программы, переменная может менять свое значение.

Код JavaScript:

let bear, bunny, toys, things; // объявляем переменные // присваиваем переменным значение bear = ‘Мишка’; bunny = ‘Кролик’; toys = bear; // сначала переменной toys присваиваем значение переменной bear. То есть Мишка toys = bunny; // теперь меняем значение переменной toys и присваиваем ей значение переменной bunny. То есть Кролик toys = ‘Игрушки’; // теперь меняем значение переменной toys на игрушки things = toys; // присваиваем переменной things значение переменной toys alert(things); // выводим на экран значение переменной должно быть «Игрушки»

Надеюсь, вам понравился этот урок.

Видео по этой теме

Источник: d-nik.pro

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru