Загрузить PDF
Загрузить PDF
Обродай ожаловатьпай анай иптографиюкрай сай икихаувай!
Независимо от того, пишите ли вы записки своим друзьям в классе или пытаетесь постигнуть криптографию (науку о кодах и шифрах) ради интереса, эта статья может помочь вам узнать некоторые основные принципы и создать свой собственный способ кодировки личных сообщений. Прочитайте шаг 1 ниже, чтобы понять с чего начинать!
Некоторые люди используют слова «код» и «шифр» для обозначения одинаковых понятий, но те, кто серьезно занимаются этим вопросом, знают, что это два абсолютно разных понятия. Секретный код – система, в которой каждое слово или фраза в вашем сообщении заменяются другим словом, фразой или серией символов. Шифр – система, в которой каждая буква вашего сообщения заменяется другой буквой или символом.
Стандартные коды
-
1
Создайте свою собственную книгу кода. Любой полноценный код требует наличия книги кода. Придумайте слова или фразы, замещающие необходимые вам слова или фразы, затем соберите их всех вместе в книге кода, чтобы вы могли поделиться ею с вашими супер секретными друзьями.
-
2
Создайте ваше сообщение. Используя книгу кода, аккуратно и внимательно напишите сообщение. Обратите внимание, что соединение вашего кода с шифром сделает ваше сообщение еще более защищенным!
-
3
Переведите ваше сообщение. Когда ваши друзья получат сообщение, им понадобится использовать их экземпляр книги кода, чтобы перевести сообщение. Убедитесь, что они знают, что вы используете двойной метод защиты.
Реклама
Книга кода
-
1
Выберите книгу. При использовании книги кода вы создадите код, обозначающий место нужных слов в книге. Если вы хотите увеличить шансы того, что любое из необходимых вам слов будет в книге кода, то используйте словари или большие справочники путешественника. Вам необходимо, чтобы количество слов, используемых в книге, было большим и относилось к разным темам.
-
2
Переведите слова вашего сообщения в цифры. Возьмите первое слово вашего сообщения и найдите его где-то в книге. После этого запишите номер страницы, номер строки и номер слова. Напишите их вместе для замены нужного вам слова. Делайте эту операцию для каждого слова. Вы также можете использовать этот прием для шифрования фраз, если ваша книга кода может предоставить вам нужную фразу готовой.
- Итак, например, слово на странице 105, пятая строчка вниз, двенадцатое по счету станет 105512, 1055.12 или чем-то похожим.
-
3
Передайте сообщение. Отдайте зашифрованное сообщение вашему другу. Тому понадобится использовать ту же самую книгу для обратного перевода сообщения.
Реклама
Полицейское кодирование
-
1
Выбирайте самые популярные фразы. Этот тип кода работает лучше всего, когда у вас есть набор фраз, которые вы используете чаще всего. Это может быть чем-нибудь от простого «Он симпатичный!» до чего-нибудь более серьезного, например, «Я не могу встретиться прямо сейчас».
-
2
Подготовьте код для каждой из фраз. Вы можете использовать аналог полицейского кодирования и присвоить каждой фразе номер или несколько букв или использовать другие фразы (как поступают в больницах). Например, вы можете сказать «1099» вместо «Эта линия прослушивается» или вы можете сказать «Я думаю о том, чтобы поехать порыбачить на этих выходных». Использование цифр легче при письме, но использование фраз выглядит менее подозрительно.
-
3
Запомните код. Этот тип кодировки работает лучше всего, если вы можете держать в памяти все фразы, хотя наличие книги кода для подстраховки никогда не повредит!
Реклама
Шифрование, основанное на дате
-
1
Выберите дату. Например, это будет день рождения Стивена Спилберга 18 декабря 1946 года. Напишите эту дату, используя цифры и косые черты (12/18/46), затем уберите черты, чтобы получить шестизначное число 121846, которые вы можете использовать для передачи зашифрованного сообщения.
-
2
Присвойте каждой букве цифру. Представьте, что сообщение «Мне нравятся фильмы Стивена Спилберга». Под сообщение вы напишите ваше шестизначное число снова и снова до самого конца предложения: 121 84612184 612184 6121846 121846121.
-
3
Зашифруйте ваше сообщение. Напишите буквы слева направо. Передвиньте каждую букву обычного текста на количество единиц, указанных под ней. Буква «М» сдвигается на одну единицу и становится «Н», буква «Н» сдвигается на две единицы и становится «П». Обратите внимание, что буква «Я» сдвигается на 2 единицы, для этого вам необходимо перескочить на начало алфавита, и становится «Б». Ваше итоговое сообщение будет «Нпё хфёгбущг ъйныфя чукгмсё тсйуексеб».
-
4
Переведите ваше сообщение. Когда кто-то захочет прочитать ваше сообщение, все, что ему надо будет знать, так это какую дату вы использовали для кодировки. Для перекодировки воспользуйтесь обратным процессом: напишите цифровой код, затем верните буквы в противоположном порядке.
- Кодирование при помощи даты имеет дополнительное преимущество, так как дата может быть абсолютно любой. Вы также можете изменить дату в любой момент. Это позволяет обновлять систему шифра гораздо легче, чем при использовании других методов. Как бы то ни было лучше избегать таких известных дат как 9 мая 1945 года.
Реклама
Шифрование при помощи числа
-
1
Выберите с вашим другом секретное число. Например, число 5.
-
2
Напишите ваше сообщение (без пробелов) с этим количеством букв в каждой строчке (не переживайте, если последняя строчка короче). Например, сообщение «Мое прикрытие раскрыто» будет выглядеть так:
- Моепр
- икрыт
- иерас
- крыто
-
3
Чтобы создать шифр возьмите буквы сверху вниз и запишите их. Сообщение будет «Миикокереррыпыатртао».
-
4
Для расшифровки вашего сообщения ваш друг должен посчитать общее количество букв, разделить его на 5 и определить, есть ли неполные строки. После этого он/она записывает эти буквы в колонки, так чтобы было 5 букв в каждом ряду и одна неполная строка (если есть), и читает сообщение.
Реклама
Графический шифр
-
1
Нарисуйте знаки «решетка» и «+». На листе бумаги создайте основу вашего шифра. Она будет выглядеть, как # и + (поверните знак плюса, чтобы он выглядел как ромб, а не квадрат). [1]
-
2
Расставьте буквы по ячейкам. Данные фигуры имеют ячейки между линиями. Заполните эти ячейки двумя буквами алфавита. Размещайте буквы хаотично и не используйте одну и ту же букву дважды.
- Любой адресат сообщения будет должен иметь такую же копию основы шифра с буквами, для того чтобы прочитать ваше сообщение.
-
3
Запишите ваш код. Возьмите первую букву вашего сообщения. Найдите ее в основе шифра. Посмотрите на линии, которые вокруг нее. Нарисуйте такие же линии, как и линии, которые образуют ячейки в основе шифра. Если буква, которую вы пишите, является второй в ячейке, добавьте точку к линиям. Проделайте данную операцию для каждой буквы сообщения.
Реклама
Перестановка Цезаря
-
1
Создайте свой алфавит шифра. Шифр Цезаря перемещает алфавит и затем заменяет буквы их новым номером по порядку. [2]
Это делает код более трудным для взлома, если вы меняете расстановку регулярно. Например, 3-х перестановочный шифр будет означать, что А становится Э, Б становится Ю, В становится Я и т.д. Если вы хотите написать «Встречаемся завтра на станции», то сообщение будет выглядеть «Яопнвфэвйоь еэяпнэ кэ опэкуёё».- Существует много вариантов изменения порядка алфавита перед созданием кода. Это делает шифр более надежным.
-
2
Запишите ваше сообщение. Наличие помощника, как декодирующий круг, может сделать это проще, если вы сможете подготовить такое, которое будет подходить вашему коду.
-
3
Переведите сообщение. Человек, расшифровывающий ваш код, должен знать только число, чтобы правильно восстановить алфавит. Регулярно меняйте его, но убедитесь, что вы можете безопасно передать адресату, что будет новым числом сдвига алфавита.
Реклама
Путаный язык
-
1
Определите слова, которые начинаются с гласных. Если есть такие, просто добавляйте «ай» на конце слова. Например, «ухо» станет «ухоай», «арка» станет «аркаай» и «оскорбление» станет «оскоблениеай».
-
2
Определите слова, которые начинаются с согласной. Если есть такие, то перенесите первую букву слова в конец и добавьте «ай». Если в начале слова стоят две (или более) согласных, переставьте их в конец и добавьте «ай».
- Например, «труп» станет «уптрай», «грамм» станет «аммграй» и «мысль» станет «ысльмай».
-
3
Говорите на путаном языке. Путаный язык работает лучше всего, если на нем говорить быстро, но для этого потребуется некоторое время подготовки. Не прекращайте практиковаться!
Реклама
Звуковой код
-
1
Создайте свой звуковой код. Этот код будет работать также как и азбука Морзе. Вам будет нужно присвоить звуковой ритмичный код каждой букве или отдельному слову. Выберите ритмы, которые вы можете запомнить.
-
2
Научите вашему коду других. Код должен быть всегда в памяти, поэтому научите коду всех, с кем планируете его использовать.
-
3
Простучите ваше сообщение. Используйте ваши пальцы, конец карандаша или другой инструмент для передачи вашего сообщения. Старайтесь быть скрытными. Вам не надо, чтобы кто-то догадался, что вы общаетесь.
Реклама
Тарабарский язык
-
1
Научитесь говорить на тарабарском языке. Тарабарский язык – языковая игра наподобие путаного языка, но звучит более сложно. Короткое объяснение – вам надо добавлять «-отаг» (или любой аналог)перед каждой гласной в слоге. Это гораздо хитрее, чем звучит на самом деле! Вам потребуется практика, чтобы в совершенстве овладеть этим кодом.
Советы
- Прячьте ваш код в том месте, о котором знают только отправитель и получатель. Например, развинтите любую ручку и положите ваш код внутрь нее, соберите ручку обратно, найдите место (например, подставка под карандаши) и сообщите получателю место и тип ручки.
- Шифруйте также и пробелы, чтобы запутать код еще больше. Например, вы можете использовать буквы (Е, Т, А, О и Н работают лучше всего) вместо пробелов. Они называются пустышками. Ы, Ъ, Ь и Й будут выглядеть слишком явными пустышками для опытных взломщиков кодов, поэтому не используйте их или другие выделяющиеся символы.
- Вы можете создать свой собственный код, переставляя буквы в словах в случайном порядке. «Диж яемн в крапе» – «Жди меня в парке».
- Всегда отправляйте коды агентам с вашей стороны.
- При использовании турецкого ирландского вам не нужно специально использовать «эб» перед согласной. Вы можете использовать «иэ», «бр», «из» или любую другую неприметную комбинацию букв.
- При использовании позиционной кодировки, не стесняйтесь добавлять, удалять и даже переставлять буквы с одного места на другое, чтобы сделать дешифровку еще более трудной. Убедитесь, что ваш партнер понимает, что вы делаете, или все это будет бессмысленным для нее/него. Вы можете разбить текст на части так, чтобы было три, четыре или пять букв в каждой, а затем поменять их местами.
- Для перестановки Цезаря вы можете переставлять буквы на любое количество мест, которое вы хотите, вперед или назад. Только убедитесь что правила перестановок одинаковы для каждой буквы.
- Всегда уничтожайте расшифрованные сообщения.
- Если вы используете свой собственный код, не делайте его слишком сложным, чтобы остальные не смогли его разгадать. Он может оказаться слишком сложным для расшифровки даже для вас!
- Используйте азбуку Морзе. Это один из самых известных кодов, поэтому ваш собеседник быстро поймет, что это.
Реклама
Предупреждения
- Если вы пишете код неаккуратно, то это сделает процесс декодирования более сложным для вашего партнера, при условии что вы не используете вариации кодов или шифров, созданные специально, чтобы запутать дешифровальщика (за исключением вашего партнера, конечно).
- Путаный язык лучше использовать для коротких слов. С длинными словами он не настолько эффективен, потому что дополнительные буквы гораздо более заметны. То же самое при использовании его в речи.
Реклама
Что вам понадобится
Для кодов:
- Книга или словарь
- Карандаш
- Бумага
Для шифров:
- Партитура для кода
- Карандаш
- Бумага
- Любая дата
Источники
Об этой статье
Эту страницу просматривали 83 611 раз.
Была ли эта статья полезной?
Программисты в первую очередь работают с языком. Поэтому написание программ похоже на любой другой вид письменной работы. Сначала вы излагаете свои мысли как есть, а затем «причесываете» до тех пор, пока текст не будет легко читаться. Качество кода – результат проявления небезразличного отношения к делу и показатель профессионализма.
Почему важна читаемость кода
Чтение кода происходит чаще, чем написание. Есть большая разница между обучением программированию и реальной работой в компании. Вначале мы и пишем, и читаем собственные программы. Но чем дальше мы продвигаемся, тем чаще нам приходится не писать, а читать код. Чем легче код читается, тем проще с ним работать другим людям.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете
Чем проще читать код, тем проще его сопровождать. Понятный, читаемый код легче тестировать, в нем легче отлавливать ошибки – они не скрываются в его запутанной структуре. Плохо оформленный код неприятно изучать, читать, тестировать, сложно дополнять. Рано или поздно плохой код становится проще переписать.
Эстетическое восприятие кода влияет на удобство работы. Казалось бы, гораздо важнее производительность, возможность модификации, расширения… Но все эти показатели улучшаются, если код соответствует нашему чувству прекрасного. Глядя на качественно написанный код, можно быстро понять алгоритм и то, как работает программа для разных входных данных. Чистый код читается, как хорошо написанная проза: слова превращаются в зрительные образы.
Стиль кода определяет его будущее. Стиль и дисциплина продолжают жить в коде, даже если в нем не осталось ни одной исходной строки.
С чего начать: документация по стилю оформления кода
Все дороги программиста ведут к документации. В каждом языке существует свой стандарт оформления кода. Для Python используется документ PEP-8, для PHP – стандартные рекомендации PSR-1 и PSR-2, для Java – Java Coding Conventions, для JavaScript – Airbnb JavaScript Style Guide или Google JavaScript Style Guide. Документ для вашего языка вы найдете по поисковому запросу <Название языка> Code Style.
Когда вы работаете в группе разработчиков, нужно использовать принятые в команде правила. Стиль должен быть единым, как будто код был написан одним здравомысленным человеком.
В популярных IDE заложена возможность автоматической настройки стиля кода под стандарты – общие или предложенные командой. Разберитесь, как настроить среду под необходимое оформление. Потраченное время сэкономит многие часы рутинной работы.
Применение стандартов – лучший подход для новичка. Читающий не будет отвлекаться на оформление и сразу погрузится в тонкости выбранных подходов, а не расстановок переносов. Изложенные ниже правила понадобятся для того, чтобы понять, как действовать в тех случаях, когда стандарт не дает никаких рекомендаций.
Роберт Мартин «Чистый код. Создание, анализ и рефакторинг»
Как Библиотека программиста, мы не могли обойтись без упоминания замечательной книги Роберта Мартина о чистом коде и анализе программ. В книге приводятся примеры для языка Java, но большинство идей справедливы для любых языков.
Книга в сообществе Книги для программистов
Книга на Ozon
Всё что изложено ниже, в значительной мере представляет сжатый конспект этой книги с дополнениями из нашего опыта в проектировании программ. Итак, приступим к практикам.
Главное правило чистого кода: выразительные имена
Содержательность. К выбору названий любых объектов нужно подходить со всей ответственностью. Выразительные имена позволяют писать код, не требующий комментариев.
Полезно не только исходно выбирать ясные имена, но и заменять названия на более удачные, если они нашлись позже. Современные среды программирования позволяют легко заменить название переменной во всём коде, так что это не должно быть проблемой.
Сравните. До:
public List < int[] > getThem() {
List < int[] > list1 = new ArrayList < int[] > ();
for (int[] x: theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
После:
public List < int[] > getFlaggedCells() {
List < int[] > flaggedCells = new ArrayList < int[] > ();
for (int[] cell: gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
В первом примере непонятно, что вообще происходит, хотя в этом коде нет ни сложных выражений, ни каких-либо странностей. В результате правок сам код никак не изменился. Если знать, что это часть игры «Сапер», то теперь из кода понятно: здесь обрабатывается список ячеек игрового поля. Этот код можно улучшать и далее, но уже в результате простого переименования переменных стало понятно, что происходит.
Избегайте любых двусмысленностей и ложных ассоциаций. Если в объекте перечисляется список, но сам объект не является списком, нельзя в составе его названия употреблять слово list
– это запутывает читающего.
Остерегайтесь малозаметных различий – имена объектов должны существенно отличаться друг от друга. По этой причине плохи длинные имена с повторяющимся элементами – чтобы сличить их друг с другом, тратятся лишние силы и время. Избегайте использования в именах переменных строчной буквы L и прописных I, O – они часто путаются с единицей и нулем.
Путаница также возникает, если несколько синонимичных слов и выражений используются для обозначениях разных сущностей, например, controller
, manager
и driver
.
Имя должно легко произноситься. Используйте для названий слова. Если названия состоят из сокращений, каждый начинает произносить их по-своему, что затрудняет взаимопонимание. А при чтении кода каждый раз «спотыкаешься» о такое название.
Имя должно быть удобным для поиска. Слишком короткие имена трудно искать в большом объеме текста. Однобуквенные имена можно использовать только для локальных переменных в коротких методах и для счетчиков циклов (i, j, k
). Обычно называя объект одной буквой, вы всего лишь создаете временный заменитель. Но не бывает ничего более постоянного, чем что-то «временное». Проверяйте грамотность написания выбранных слов.
Правильно выбирайте часть речи. Классы и объекты желательно называть существительными и их комбинациями: Account
, WikiPage
, HTMLParser
. Имена функций и методов лучше представлять глаголами или глагольными словосочетаниями: delete_page
, writeField(name)
. Для методов чтения/записи и предикатов используйте стандартные префиксы get
, set
, is
.
Заменяйте «магические» числа именованными константами. Одно из самых древних правил разработки. Магическими называют числа, о которых сходу нельзя сказать, что они означают. Например: 100
, 1.1
, 42
, 1000000
. Выделяйте такие числа в соответствующие константы с конкретным названиями. Например, вместо числа 86400
в теле кода приятнее встретить константу SECONDS_PER_DAY
.
Не стоит следовать этому правилу, как и любому другому, безоговорочно. В формулах некоторые константы лучше воспринимаются в числовой записи.
Одно слово для каждой концепции. Для одной и той же идеи, реализующей одну механику, используйте одно слово. Например, для добавления элементов одинаковым образом – метод add
. Однако, если механика и семантика изменились, потребуется и другое слово (например, insert
, append
), описывающее новую концепцию.
Ваш код будут читать программисты. Не стесняйтесь использовать термины из области информатики, общепринятые названия алгоритмов и паттернов. Такие имена сообщают информацию быстрее, чем сам код.
Помещайте имена в соответствующий контекст. Например, имена street
, house_number
, city
понятнее смотрятся внутри класса Address
.
Избегайте остроумия и каламбуров в названиях. Шутки имеют свойство быть понятными лишь ограниченное время и для конкретной аудитории, знакомой с первоисточником. Отдавайте предпочтение ясности перед развлекательностью. Шутки можно приберечь для презентации, которая происходит «здесь и сейчас». Хороший код способен выйти далеко за границы вашей культуры.
Среды разработки продолжают развиваться. Уже нет никакой необходимости кодировать типы в именах, создавать префиксы для членов классов. Всю нужную информацию можно получить из цветового выделения или контекстно-зависимых подсказок сред разработки. Добавление префиксов убивает удобство поиска по автодополнению – выпадает слишком много имен, начинающихся с одинаковых символов.
Функции
Компактность. Уже в 80-е годы считалось, что функция должна занимать не более одного экрана. Экраны VT100 состояли из 24 строк и 80 столбцов. В наши дни на экране можно разместить гораздо больше инфорфмации, но лучше ограничиться тем же объемом. Самоограничение позволяет видеть точку объявления каждой используемой переменной и держать в уме всю «историю», которую рассказывает функция.
Вполне вероятно, что тот, кто будет сопровождать ваш код, не будет иметь возможности работать на большом мониторе. Например, ему необходимо одновременно разместить на одном рабочем столе экрана ноутбука несколько окон. Среды разработки позволяют установить ограничение, «верхнюю планку» (то есть правую 😉 ).
Блоки if, else, while должны иметь минимальный размер, чтобы информацию о них можно было держать в уме. Старайтесь избегать отрицательных условий – на их восприятие обычно уходит чуть больше времени, чем на положительные. То есть запись if (buffer.shouldCompact())
предпочтительнее записи if (!buffer.shouldNotCompact()
.
Правило одной операции. Плохой код пытается сделать слишком много всего, намерения программиста расплываются для читателя. Поэтому стоит ввести важное правило:
Функция должна выполнять только одну операцию, выполнять ее хорошо, и ничего другого она делать не должна.
Каждая функция должна делать то, что вы от нее ожидали из названия. Если функция действует не так, как она названа, читатель кода перестает доверять автору программы, ему приходится самостоятельно разбираться во всех подробностях реализации.
Я люблю, чтобы мой код был элегантным и эффективным. Логика должны быть достаточно прямолинейной, чтобы ошибкам было трудно спрятаться; зависимости — минимальными, чтобы упростить сопровождение; обработка ошибок — полной в соответствии с выработанной стратегией; а производительность — близкой к оптимальной, чтобы не искушать людей загрязнять код беспринципными оптимизациями. Чистый код хорошо решает одну задачу.
Исключения вместо кодов ошибок. Используйте исключения (try-catch
, try-except
) вместо возвращения кодов ошибок. Возвращение кодов приводит к слишком глубокой вложенности.
К тому же при использовании исключений код обработки ошибок изолируются от ветви нормального выполнения. Сами блоки лучше выделять в отдельные функции. Вместе с исключением нужно передавать контекст ошибки – сообщение, содержащее сведения об операции и типе сбоя.
Соблюдайте уровни абстракции. Одна функция – один уровень абстракции. Смешение уровней абстракции создает путаницу, функция обрастает слишком большим количеством второстепенных подробностей. Старайтесь соблюдать ясную иерархию.
Код читается сверху вниз. По мере чтения уровни абстракции должны меняться равномерно. Каждая функция должна быть окружена функциями единого уровня абстракции.
Ограничивайте число аргументов. Чем больше аргументов у функции, тем сложнее с ней работать. Необходимость функций с количеством аргументов большим двух должна быть подкреплена очень вескими доводами. Каждый новый аргумент критически усложняет процедуру тестирования. Если функция должна получать более двух аргументов, скорее всего, эти аргументы образуют концепцию, заслуживающую собственного имени.
Комментарии
Это непопулярное мнение, но в большинстве случаев комментарии – зло. Код должен быть самодокументированным. Комментарий – всегда признак неудачи: мы не смогли написать код так, что он понятен без комментариев. Проверьте, можно ли выразить свое намерение в самом коде.
В чём проблема? Программисты умеют сопровождать код, но не комментарии. В растущем коде комментарии быстро устаревают, частично или полностью переставая соответствовать ситуации. Только код правдиво сообщает своим содержанием, что он в действительности делает. Лучше потратить время на исправление запутанного кода, чем добавлять к плохому коду комментарии.
Однако есть несколько видов комментариев, которые выглядят достаточно оправданными.
TODO-комментарии. Бывает так: нужно было успеть к дедлайну, пришлось писать код быстро, поэтому в нем остались дыры. То есть всё работает, но реализация ущербная. Укажите все недоработки и создайте под них задачи. Каждый комментарий указывает на недоработку или потенциальную уязвимость.
Юридические комментарии. Корпоративные стандарты могут принуждать вставлять комментарии по юридическим соображениям. Ограничьтесь в таком комментарии описанием лицензии и ссылкой на внешний документ.
Предупреждения о последствиях. Иногда бывает полезно предупредить других программистов о нежелательных последствиях:
// Не запускайте, если только не располагаете
// излишками свободного времени.
Комментарий также может подчеркивать важность обстоятельства, которое на первый взгляд кажется несущественным.
По-настоящему плохие комментарии
Бывают такие типы комментариев, которые лучше никогда не делать.
Закомментированный программный код. «Когда-нибудь в будущем раскомментирую этот код, приведу всё в порядок. Или вдруг эта идея кому-то поможет». Любой закомментированный код только ухудшает ситуацию. Все изменения хранятся в контроле версий – удаляйте такой код на корню. Это просто мусор: «потом» равносильно «никогда». Если что-то действительно нужно сделать, создайте краткий TODO-комментарий и задачу.
Мертвые функции – идентичные по смыслу предыдущему пункту функции и методы, которые не вызываются в программе. Пользуйтесь системой контроля версий и без зазрений совести удаляйте любой код, который не используется во время выполнения программы.
Избыточные комментарии. Задайте себе вопрос: стал ли код понятнее после прочтения комментария? Часто комментарии просто загромождают код и скрывают его смысл, излагая очевидные вещи. Иногда в комментарии включаются описания не относящихся к делу подробностей. Но профессионал бережет не только свое, но и чужое время, и не отвлекает читающего без повода.
Журнальные комментарии и ссылки на авторов. Некоторые программисты добавляют комментарий в начало файла при редактировании. Или указывают, кто и когда внес исправления. Когда-то это было оправдано, но теперь у нас есть системы контроля версий – это гораздо лучший способ обозначить границы зоны ответственности каждого.
Позиционные маркеры. Иногда любят отмечать определенные группы и позиции в исходных файлах:
// Классы //////////////////////////////////
Качественно организованный код способен внятно рассказать историю без балластных заголовков.
Уровень файлов программ
Минималистичность. Чем меньше кода, тем лучше. Имя файла должно быть простым, но содержательным. Маленькие файлы обычно более понятны, чем большие. Но размер файла, конечно, не должен быть самоцелью.
Код должен быть максимально линейным. Чем больше вложенность кода, тем сложнее его читать. Следите за тем, как двигаются ваши глаза. В хорошем коде вы двигаетесь строка за строкой, лишь изредка возвращаясь к предыдущим строчкам. Вложенность более трех уровней указывает на то, что с кодом нужно поработать: переписать условия проверок и циклов (использовать return и функциональное программирование), разбить код на меньшие методы.
Отдельные «мысли» следует отделять друг от друга пустыми строками. Каждая пустая строка – зрительная подсказка: описание одной концепции закончилось, далее следует новая. При просмотре кода взгляд концентрируется на первых строчках – в них больше всего информации, как в началах абзацев этого текста.
Тесно связанные концепции, должны располагаться вблизи друг друга. Не заставляйте читателя прыгать между файлами или постоянно скроллить файл. По той же причине переменные нужно объявлять как можно ближе к месту использования. Однако переменные экземпляров лучше объявлять в одном месте, обычно в начале класса, так как в хорошо спроектированном классе переменные используются большинством методов класса.
Пробелы для группировки взаимосвязанных элементов. Пробелы улучшают читаемость кода, если они стоят вокруг операторов присваивания, после запятых при перечислении переменных. В формулах пробелы используются для подчеркивания приоритета: не ставятся между множителями, но отбивают знаки сложения и вычитания.
Отступы. Размер отступов должен соответствовать позиции кода в иерархии. Это общая практика, которая позволяет быстро пропускать области видимости, не относящиеся к текущей ситуации. Не поддавайтесь искушению нарушить правила расстановки отступов для коротких команд.
Некоторые замечания по поводу архитектуры и тестов
В системе должны выполняться все тесты. Тесты – главный способ, с помощью которого можно понять, что система контролируема. А только контролируемую систему можно проверить.
Три закона тестирования по методологии TDD. Тестовый код не менее важен, чем код продукта. Соблюдение следующих трех правил позволяет организовать работу так, чтобы тесты охватывали все аспекты кода продукта:
- Не пишете код продукта, пока не напишете отказной модульный тест.
- Не пишите модульный тест в объеме большем, чем необходимо для отказа.
- Не пишите код продукта в объеме большем, чем необходимо для прохождения текущего отказного теста.
F.I.R.S.T. Качественные тесты должны обладать пятью характеристиками, первые буквы которых образуют указанный акроним:
- Fast. Тесты должны выполняться быстро.
- Independent. Тесты не должны зависеть друг от друга и выполняться в любом порядке.
- Repeatable. Тесты должны давать воспроизводимые в любой среде результаты.
- Self-validating. Результат выполнения теста – логический признак: тест пройден или нет. Иначе результаты приобретают субъективный характер.
- Timely. Тест должен создаваться своевременно. Тесты нужно писать непосредственно перед написанием кода.
Повышение уровня абстракции и устранение дубликатов. Все программы состоят из очень похожих элементов, а все задачи программирования сводятся к работе с ограниченным набором действий. Многие из этих действий могут быть описаны в одних и тех же терминах, например, извлечение элемента из коллекции. В подобных ситуациях правильно инкапсулировать реализацию в более абстрактном классе. Повышение уровня абстракции позволяет избежать дублирования и многократно применения одного и того же кода, лучше понять, что действительно происходит в программе, уйдя от частностей.
Если что-то в программе делается снова и снова, значит, какая-то важная концепция не нашла своего отражения в коде. Нужно попытаться понять, что это такое, и выразить идею в виде кода. Избегайте дубликатов, это всегда лишняя работа, лишний риск, лишняя сложность.
Несколько языков в одном исходном файле. Современные среды программирования позволяют объединять в одном файле код, написанный на разных языках. Результат получается запутанным, неаккуратным и ненадежным. Чтобы четко разграничить ответственность, в файле должен преобладать один язык. Сведите к минимуму количество и объем кода на дополнительных языках.
Не нужно бездумно следовать догмам. Не переусердствуйте с сокращением кода функций и классов. Всегда руководствуйтесь здравым смыслом.
Заключение
Чистый код выглядит так, как если его автор над ним тщательно потрудился. Вы не можете найти очевидных возможностей для его улучшения. Попытавшись его улучшить, вы вновь вернетесь к тому же коду.
Чтобы писать чистый код, который бы никого не удивлял, необходимо раз за разом сознательно применять описанные приемы. При чтении чистого кода вы улыбаетесь, как при виде искусно сделанной музыкальной шкатулки. Код можно назвать красивым, если у вас создается впечатление, что язык был создан специально для этой задачи.
Расскажите нам о правилах, которые вы применяете для написания своего программного кода. Какие open source программы, на ваш взгляд, имеют лучшее качество кода?
Обновлено: 15.05.2023
Шифр Цезаря. Этот шифр реализует следующее преобразование текста: каждая буква исходного текста заменяется следующей после нее буквой в алфавите, который считается написанным по кругу.
Используя шифр Цезаря, зашифровать следующие фразы:
а) Делу время – потехе час
б) С Новым годом
Задание 2
Используя шифр Цезаря, декодировать следующие фразы:
б) Вёмпё тпмочё рфтуьой
D ktce hjlbkfcm ` kjxrf?
D ktce jyf hjckf
Задание 4
Москва – столица России.
Задание 5
С помощью ключа РА, ДЕ, КИ, МО, НУ, ЛЯ (буква Р заменяется на А и наоборот) закодировать пословицы:
А) РЫБАК РЫБАКА ВИДИТ ИЗДАЛЕКА
Б) СДЕЛАЛ ДЕЛО – ГУЛЯЙ СМЕЛО
Задание 6
Закодируйте информацию с помощью кодовой таблицы
А) 14 29 5 13 33 17 6 18 6 5 1 25 10 10 15 22 16 18 14 1 24 10 10
Б) 17 18 10 2 6 4 1 6 14 12 33 9 29 12 21 8 6 19 20 16 3
В) 14 15 16 4 10 6 8 6 19 20 29 17 18 10 27 13 10
Г) 10 9 4 13 21 2 16 12 16 11 5 18 6 3 15 16 19 20 10
Д) 6 19 20 30 8 6 19 20 29 12 16 20 16 18 29 6 19 20 1 13 10
Е) 14 6 8 5 21 15 1 18 16 5 15 29 14 10 10 17 16 15 33 20 15 29 14 10
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 79 человек(а).
Стандартные коды
Создайте свою собственную книгу кода. Любой полноценный код требует наличия книги кода. Придумайте слова или фразы, замещающие необходимые вам слова или фразы, затем соберите их всех вместе в книге кода, чтобы вы могли поделиться ею с вашими супер секретными друзьями.
Книга кода
Выберите книгу. При использовании книги кода вы создадите код, обозначающий место нужных слов в книге. Если вы хотите увеличить шансы того, что любое из необходимых вам слов будет в книге кода, то используйте словари или большие справочники путешественника. Вам необходимо, чтобы количество слов, используемых в книге, было большим и относилось к разным темам.
- Итак, например, слово на странице 105, пятая строчка вниз, двенадцатое по счету станет 105512, 1055.12 или чем-то похожим.
Полицейское кодирование
Запомните код. Этот тип кодировки работает лучше всего, если вы можете держать в памяти все фразы, хотя наличие книги кода для подстраховки никогда не повредит!
Прежде всего, разберемся в терминологии.
Ключ — это компонент, на основе которого можно произвести шифрование или дешифрование.
Шифр Атбаша
Например, есть у нас алфавит, который полностью соответствует обычной латинице.
И теперь пишем нужное сообшение на исходном алфавите и алфавите шифра
Шифр Цезаря
Опять же, для наглядности, возьмем латиницу
И теперь сместим вправо или влево каждую букву на ключевое число значений.
Например, ключ у нас будет 4 и смещение вправо.
Исходный алфавит: a b c d e f g h i j k l m n o p q r s t u v w x y z
Зашифрованный: w x y z a b c d e f g h i j k l m n o p q r s t u v
Шифруем его и получаем следующий несвязный текст:
Шифр Вернама (XOR-шифр)
Исходный алфавит — все та же латиница.
XOR принимает сигналы (0 или 1 каждый), проводит над ними логическую операцию и выдает один сигнал, исходя из входных значений.
Если все сигналы равны между собой (0-0 или 1-1 или 0-0-0 и т.д.), то на выходе получаем 0.
Если сигналы не равны (0-1 или 1-0 или 1-0-0 и т.д.), то на выходе получаем 1.
Переведем их в бинарный код и выполним XOR:
В данном конкретном примере на месте результирующих символов мы увидим только пустое место, ведь все символы попали в первые 32 служебных символа. Однако, если перевести полученный результат в числа, то получим следующую картину:
С виду — совершенно несвязный набор чисел, но мы-то знаем.
Шифр кодового слова
Например, возьмем для разнообразия, кириллический алфавит.
Теперь вписываем данное слово в начале алфавита, а остальные символы оставляем без изменений.
Получим в итоге следующий нечитаемый бред:
Шифр Плейфера
Сначала поступаем как с предыдущим шифром, т.е. уберем повторы и запишем слово в начале алфавита.
Разобьем его на биграммы, т.е. на пары символов, не учитывая пробелы.
Шифрование выполняется по нескольким несложным правилам:
1) Если символы биграммы находятся в матрице на одной строке — смещаем их вправо на одну позицию. Если символ был крайним в ряду — он становится первым.
Например, EH становится LE.
2) Если символы биграммы находятся в одном столбце, то они смещаются на одну позицию вниз. Если символ находился в самом низу столбца, то он принимает значение самого верхнего.
Например, если бы у нас была биграмма LX, то она стала бы DL.
3) Если символы не находятся ни на одной строке, ни на одном столбце, то строим прямоугольник, где наши символы — края диагонали. И меняем углы местами.
Например, биграмма RA.
Поздравляю. После прочтения этой статьи вы хотя бы примерно понимаете, что такое шифрование и знаете как использовать некоторые примитивные шифры и можете приступать к изучению несколько более сложных образцов шифров, о которых мы поговорим позднее.
- Для учеников 1-11 классов и дошкольников
- Бесплатные сертификаты учителям и участникам
Бит – это минимальная единица измерения информации.
Бит – это минимальная единица измерения информации.
Бит – это минимальная единица измерения информации.
- подготовка к ЕГЭ/ОГЭ и ВПР
- по всем предметам 1-11 классов
Курс повышения квалификации
Дистанционное обучение как современный формат преподавания
Курс повышения квалификации
Инструменты онлайн-обучения на примере программ Zoom, Skype, Microsoft Teams, Bandicam
- Курс добавлен 31.01.2022
- Сейчас обучается 24 человека из 17 регионов
Курс повышения квалификации
Педагогическая деятельность в контексте профессионального стандарта педагога и ФГОС
- ЗП до 91 000 руб.
- Гибкий график
- Удаленная работа
Дистанционные курсы для педагогов
Свидетельство и скидка на обучение каждому участнику
Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:
5 606 034 материала в базе
Материал подходит для УМК
§ 13. Тексты в компьютерной памяти
Самые массовые международные дистанционные
Школьные Инфоконкурсы 2022
Свидетельство и скидка на обучение каждому участнику
Другие материалы
Вам будут интересны эти курсы:
Оставьте свой комментарий
- 10.03.2020 621
- DOCX 54.1 кбайт
- 5 скачиваний
- Оцените материал:
Настоящий материал опубликован пользователем Миронова Анастасия Дмитриевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Автор материала
40%
- Подготовка к ЕГЭ/ОГЭ и ВПР
- Для учеников 1-11 классов
Московский институт профессиональной
переподготовки и повышения
квалификации педагогов
Дистанционные курсы
для педагогов
663 курса от 690 рублей
Выбрать курс со скидкой
Выдаём документы
установленного образца!
Учителя о ЕГЭ: секреты успешной подготовки
Время чтения: 11 минут
Минтруд предложил упростить направление маткапитала на образование
Время чтения: 1 минута
В Россию приехали 10 тысяч детей из Луганской и Донецкой Народных республик
Время чтения: 2 минуты
Онлайн-тренинг: нейрогимнастика для успешной учёбы и комфортной жизни
Время чтения: 2 минуты
Курские власти перевели на дистант школьников в районах на границе с Украиной
Время чтения: 1 минута
Минпросвещения России подготовит учителей для обучения детей из Донбасса
Время чтения: 1 минута
Школы граничащих с Украиной районов Крыма досрочно уйдут на каникулы
Время чтения: 0 минут
Подарочные сертификаты
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако администрация сайта готова оказать всяческую поддержку в решении любых вопросов, связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.
Читайте также:
- Команда которая выводит на экран сообщение для пользователя
- Сообщение на тему гусиноозерск
- Сообщение о гибриде растения
- Сообщение на тему восточные славяне
- Сообщение о безответной любви
Алоха!
Этот пост на 20k+ знаков будет полезен не только лишь всем.
Прекрасно понимаю, что правильнее было бы поступить иначе:
сделать 12 постов с 12 картинками, получить в 12 раз больше плюсиков.
Но — лично мне — было бы удобнее иметь всю информацию единой памяткой.
Поэтому я напишу эту заметку так, как писал бы для себя, где-то излишне подробно и дотошно.
Знаю, что многим писателям всё, что я напишу ниже, хорошо известно.
Знаю, что многим писателям не интересно увидеть свою книгу напечатанной.
Знаю, что для многих писателей самостоятельная публикация — по различным причинам — табу.
Знаю, что книги многих писателей публикуются издательствами, и от авторов требуется только прислать тексты.
Знаю, что есть и такие, кому было бы интересно самостоятельно издать книгу, и этот пост в первую очередь для них (для нас).
Титульный лист
Титульный лист, или просто “титул”, происходит от латинского слова titulus (надпись, заголовок).
Это одна из первых страниц книги, предваряющая текст произведения. Чтобы не вдаваться в подробности и не начинать отдельный и интересный разговор о шмуцтитулах, которые доставят немало сложностей, если задаться целью и при вёрстке располагать их по канону — по правой стороне, будем считать, что сам титульный лист — это первая страница произведения.
Первая нечётная страница. Правая часть разворота. Там, где написано название.
Каких-то жёстких требований к оформлению — нет. Можете посмотреть в книгах — там совсем по-разному, у кого-то список книг в серии, у кого-то иллюстрация, у кого-то только название… так или иначе — там больше вариантов и меньше правил.
А вот к обороту титульного листа требований довольно много. Здесь размещаются основные выходные сведения: имя автора, название книги, место издания, название издательства, год издания, а также дополнительные сведения: имена лиц, принимавших участие в издании и всё то, что служит для библиографического описания книги или является таковым. Здесь располагаются УДК, ББК, Авторский Знак, ИСБН, копирайт и возрастная маркировка.
Если вы хотите издать свою книгу и хотите, чтобы она была «настоящая», то у вас должны быть все эти знаки.
«Настоящая» книга от «ненастоящей» отличается мало чем.
«Настоящую» можно определить в библиотеку. И продавать в книжном магазине, как «книгу».
«Ненастоящую» не возьмут в библиотеку и не смогут продавать в книжном как книгу. Но вообще продавать — смогут. Только как что-то другое (не все товары в книжном магазине продаются с ISBN), но это отдельная и долгая история правовых казусов, вроде возрастной маркировки, из-за которой беременной женщине не продают книгу из школьной программы.
По поводу слайдов: красным отмечены поля — границы в вёрстке. В правом верхнем углу стоит цифра 12. Это просто номер картинки. В книжке этих красных линий и цифры в кружочке быть не должно.
Вариантов расположения информации может быть несколько. Это один из примеров.
Будет дюжина картинок, где каждая из этих рамок рассмотрена подробнее:
№1 Вот так примерно будет выглядеть оборот титульного листа:
На первый взгляд кажется, что здесь довольно много информации.
Всю эту информацию — кроме ISBN — легко получить из интернета.
Ниже показано, откуда что брать. Если возникли вопросы — пожалуйста, напишите в комментариях.
№2 Авторский Пакет (УДК, ББК, Авторский знак)
В левом верхнем углу «авторский пакет» (УДК, ББК, Авторский знак).
Эти три штуки располагаются в левом верхнем углу, немного высовываясь за поля вёрстки.
Все эти номера (УДК, ББК, Авторский знак) обычно входят в так называемый «авторский пакет».
Вы можете купить этот «авторский пакет» у любого издательства. Цену устанавливает издательство.
УДК и ББК обычно оценивают в 2-3 тысячи рублей. ISBN стоит дороже, 3-5 тысяч рублей.
Если вы написали роман на русском языке, то можете просто взять те УДК и ББК, которые я привёл.
Или можете сами найти эти данные. Ниже рассказано, где их брать:
УДК
821.161.1
Универсальная десятичная классификация (УДК) — система классификации, используемая для систематизации произведений науки, литературы и искусства, периодической печати. Это широко распространенная классификация, по которой можно определить жанр произведения. Понятно, что всё это было особенно актуально до интернетов, но «бумажная» книга — вещь по определению традиционная.
Для моего произведения это номер 821.161.1
Если вы написали беллетристический роман на русском языке, то почти наверняка этот номер подойдёт и вам.
Код идёт последовательно.
Произведение относится к Языку. Значит, первая цифра = 8;
А именно к Литературе. Значит, вторя цифра = 2;
А именно к художественной литературе на отдельном языке. Значит, третья цифра = 1;
А именно на индоевропейском языке. Значит, четвёртая цифра = 1;
А именно на славянском языке. Значит, пятая цифра = 6;
А именно на восточнославянском языке. Значит, шестая цифра = 1;
Этот восточнославянский язык — это русский язык. Значит, седьмая цифра = 1.
Итого: 821.161.1
https://classinform.ru/udk/821.161.1.html
ББК
84(2Рос=Рус)6
Библиотечно-библиографическая классификация (ББК) — это библиотечная систематизация изданий для организации всевозможных каталогов и картотек, предназначенные для организации библиотечных фондов, систематических каталогов и картотек (по отраслям знаний). Применяются для расстановки книжных фондов в библиотеках. Проще говоря, это сочетание букв и цифр обозначающих к какому разделу относится данная книга, чтобы её можно было не читая передать для хранения в подходящий отдел.
Для моего произведения это номер 84(2Рос=Рус)6
Если вы написали беллетристический роман на русском языке, то почти наверняка этот номер подойдёт и вам.
Тут такая же система:
Это социальные / гуманитарные науки. Значит, первая цифра будут 6 или 8. Значит, первая цифра = 8;
Это Филологические науки / Художественная литература. Значит, вторая цифра будет 0 или 4. Значит, первая цифра = 4;
Это фэнтези, то есть Художественная литература (произведения). Значит, первые цифры всё же = 84;
Это литература России. Значит, следующая цифры = (2);
Рос — российская. Рус — на русском языке.
Если литература народностей РФ, то в скобках вместо «Рус» будет сокращенное обозначение республики/народности.
И, наконец, это литература новейшего времени (после октября 1917 года), значит последняя цифра = 6.
Итого: 84(2Рос=Рус)6
https://classinform.ru/bbk/84-2-6.html
+ по поводу информации в скобках:
Иностранная литература тоже начинается с 84:
84 (4Вел) — литература Великобритании.
4 — литература Европы,
5 — Азия,
6 — Африка,
7 — Америка.
Внутренние шифры в скобках по странам и континентам не меняются, например, когда меняется отдел. Принцип внутренних скобок по странам одинаков по всем отделам.
Например:
63.3 (4Вел) — история Великобритании.
63.3 (2Рос=Рус) — история РФ, после скобок может быть уточнения периода.
Авторский знак
Первая буква фамилии + номер = Н-67
Авторский знак определяется по первому элементу библиографической записи, по специальной авторской таблице. Авторские знаки, из которых состоит таблица, позволяют расставлять книги в точном алфавитном порядке, почти не задумываясь над тем, какая из них должна быть по алфавиту раньше, а какая позже, и руководствуясь только буквенно-числовой последовательностью. Проще говоря, это первая буква фамилии и номер, который нужен за тем, чтобы библиотекарь мог расставлять книги по порядку и не задумываться каждый раз, в каком порядке расставлять на полках Нинсона, Нильсона, Ниссона и Нисона.
Вот таблицы Хавкиной Л. Б. в ПДФ, чтобы их скачать: https://biblio.lib.kherson.ua/files/biblio/File/havkina.pdf
Вот сайт, где они приведены в единой длинной таблице: http://www.ois.org.ua/spravka/yuliya-article/autor-mark-2015.htm
Например, я хочу издать книгу под фамилией Нинсон. Нахожу нужные буквы. Это строчка № 11247.
Все, чьи фамилии начинаются с Ним- Нин- Нио- Нип- будут иметь авторский знак: Н-67.
№3 Свободный Текст
С авторским пакетом разобрались. Теперь “Свободный Текст”:
Это название — «Свободный текст» придумал я сам, так как никакого названия у этого текстового окошка нет.
Или я его не нашёл. Если знаете, как называется предоставляемая в этом окошке информация — напишите, пожалуйста.
Сама по себе информация тут может быть какой угодно. Серия? Оформление серии? Иллюстрация на обложке?
Рекомендую воспользоваться одним из этих вариантов:
1) Ничего не писать.
2) Обратиться в издательство ***
3) Сделать самому, руководствуюсь своим чувством прекрасного.
4) Выбрать дюжину книг, оформление которых вам нравится. И посмотреть, что у них там написано.
№ 4 Библиографическое описание
Сразу под свободным пространством или свободным текстом идёт «библиографическое описание».
Библиографическое описание — это совокупность библиографических сведений о документе, его составной части или группе документов, приведённых в соответствии с определёнными правилами и являющихся результатом аналитико-синтетической переработки информации. Если интересно подробнее, то рекомендую открыть по ссылке этот стодвадцати страничный документ:
ГОСТ Р 7.0.100—2018. Библиографическая запись. Библиографическое описание. Общие требования и правила составления.
Если совсем коротенько — то вот:
(И нет, вот этот вот пробел перед двоеточием, это не ошибка, так и должно быть).
Два абзаца очень подробно:
Первый абзац:
1) Единственная строчка на обороте титульного листа, которая пишется без отступа. Вплотную к левому полю.
2) Русский язык (даже если книга переводная).
3) Фамилия. Запятая. Пробел.
4) Имя. Точка.
5) Всё. Тут больше ничего не пишется.
Второй абзац:
1) С обычным отступом от левого поля.
2) Русский язык (даже если книга переводная).
3) Название книги на русском (даже если книга переводная). Пробел.
В том виде в котором оно есть, как название: с заглавными буквами, знаками препинания и пр. На русском языке.
4) Косая черта ( / = слеш / дробь / перечёрка). Пробел.
5) Имя автора. Пробел.
6) Фамилия автора. Точка. Пробел.
7) Длинное тире. Пробел.
8) Город. Пробел. Двоеточие. Пробел.
9) Название издательства. Запятая. Пробел.
10) Год цифрами. Точка. Пробел.
11) Длинное тире. Пробел.
12) Количество страниц в книге цифрами (всего полностью, а не нумерованных) пробел.
13) Буква “с”. Точка. Пробел.
14) Всё.
После этого может быть указана дополнительная информация.
Например, что это иллюстрированное издание. Или серия, в которой выходит книга.
Как и в предыдущих случаях, это делается через тире, отделённое пробелами.
+
На что особенно советую обратить внимание:
Первое. В первом абзаце имя и фамилия разделены запятой. Во втором — нет.
Второе. Двоеточие после города отделено пробелами с двух сторон.
Третье. Страницы сокращаются, как “с”, а не как “стр”.
№5 ISBN
А под библиографическим описанием идёт ISBN.
Можно сказать, что идёт под ним или что является его частью.
Мне удобнее писать так, чтобы подробнее разобрать, что такое ISBN, отдельным пунктом:
ISBN
978-5-6045589-1-1
ISBN = International Standard Book Number = Международный стандартный номер книги
Это уникальный идентификационный номер издания. Система ISBN была внедрена для того, чтобы каждая книга, выпускающаяся в мире, могла быть однозначно идентифицирована путем присвоения ей уникального кода, состоящего из 13-ти цифр (10-ти до 2007 года) особым образом сгруппированных и разделенных дефисами.
ISBN является своеобразным «паспортом издания», без которого невозможна продажа и регистрация издания в любой книжной информационной системе. Один и тот же номер ISBN не может принадлежать различным изданиям. В каждой стране его присваивает книге только одна государственная организация.
В России 2020 года это — Российская книжная палата.
Цифры № 1, 2, 3 = префикс EAN.UCC (появились вместе с введением штрихкодов. На старых изданиях их нет).
Цифра № 4 = код страны или группы стран (русскоязычные страны — 5).
Цифры № 5, 6, 7, 8, 9 = код издательства.
Цифры № 10, 11, 12 = код книги (издания).
Цифра № 13 = контрольная для проверки индекса.
Как самостоятельно получить ISBN?
В отличии от всех остальных данных, этот номер — обязательный для изданной книги.
И, в отличии от всех остальных номеров, этот номер нельзя просто найти в сети.
В 2020 году он выдаётся книжной палатой за 3960 рублей (либо надо купить его у издательства).
http://www.bookchamber.ru/isbn.html
Для регистрации в системе ISBN и получения международного стандартного книжного номера необходимо оформить и направить по электронной почте заявку, которая является основанием для регистрации в Национальном агентстве ISBN. Форма заявки заполняется в электронном виде, подписывается руководителем организации и скрепляется печатью.
При запросе номера ISBN физическим лицом должна присутствовать его подпись. Не полностью заполненные заявки не принимаются к исполнению. Процесс регистрации от момента подачи заявки до получения номеров может занять от 3 до 10 рабочих дней.
Авторы (физические лица), которые самостоятельно готовят свои издания к печати, представляют следующие документы:
1. Скан Заявки для физических лиц по установленной форме;
2. Копию главного разворота паспорта гражданина РФ и страницу паспорта с регистрацией по месту жительства;
3. Согласие на обработку персональных данных.
Отсканированные копии указанных документов отправлять на электронную почту: isbn@tass.ru
Когда вы всё это отправите, вам придёт квитанция. Оплатите квитанцию. И получите ISBN.
Теперь у вас есть ISBN. У вас. Но не у вашей книги.
ISBN присваивается конкретному изданию. Надо будет получить книгу (сколько бы экземпляров вы не заказали) и 16 экземпляров отвезти в книжную палату, чтобы закрепить свой ISBN за конкретным изданием. Если вы напечатали 1000 книг, это одно дело. Но, если вы напечатали всего 20 или 30, то это совсем другое дело. Так что имеет смысл подумать, нужен ли вам этот ISBN.
Обычно ISBN нужен, только если вы собираете продавать книгу в книжных магазинах.
Ну или, например, чтобы загрузить обложку на ЛайвЛиб!
№ 6 Аннотация
Под ISBN располагается аннотация.
Аннотация — латинское слово annotatio «замечание».
Аннотация представляет собой краткое содержание и — одновременно — краткую характеристику книги.
Как писать крутую / продающую аннотацию — отдельная тема. Тут скорее сам факт — аннотация должна быть.
У большинства современных изданий аннотация размещена и на задней обложке. Но вместо неё на задней обложке может быть размещён рисунок или мудрое изречение, стильная пустота или рассказ «об авторе» с черно-белой (как у взрослых) фоткой. Но вот тут, в библиографических данных, должна быть именно аннотация.
Приблизительный размер: 500 знаков.
Приблизительная схема: Герой. Конфликт. Цель.
Кто пошёл? Зачем пошёл? Что сделал? И почему об этом будет интересно читать.
№ 7 УДК + ББК (дубль два)
Это те же самые номера, только расположенные теперь по правому краю, под аннотацией.
На этот раз они без авторского знака. Просто два библиотечных номера, друг под другом.
Абзацы выровнены по левому краю, но самая длинная строка упирается в правое поле.
Просто дубль информации в другом месте.
№ 8 Копирайт+Авторское Право
— знак охраны авторского права, представляет собой латинскую литеру C (первая буква слова «copyright»), помещённую в центр окружности. Его можно скопировать прямо отсюда или набрать на клавиатуре в word: (Alt+0169).
Знак охраны авторского права используется с именем физического или юридического лица, которому принадлежат права.
Указывается год публикации. Также может быть указан объект защиты авторского права (как в приведённом примере).
Первоначальным субъектом авторского права всегда является «физическое лицо, творческим трудом которого создано» произведение науки, литературы или искусства, а также другая интеллектуальная собственность — автор. Живой конкретный человек (который, по всей видимости, читает сейчас этот текст).
Ему принадлежит весь комплекс авторских прав — личные неимущественные права и исключительное право (имущественное право) на использование произведения в любой форме и любым не противоречащим закону способом. Лицо, указанное в качестве автора на оригинале или экземпляре произведения, считается его автором, если не доказано иное (презумпция авторства).
Презумпция авторства:
Технически, если под текстом /картинкой стоит моё имя — этот текст/картинка считается моим, пока не доказано обратное. Очевидно, что я могу выложить чужую картинку, и подписать её своим именем. И она будет считаться моей. Пока автор не докажет обратное. Мне кажется, что многие, пишущие в блогах и на форумах на тему авторского права или нарушения авторских прав — упускают из вида этот важный момент. Или просто не знают о нём.
В рамке № 8 (Копирайт+Авторское Право) может быть сколько угодно пунктов.
Но чаще всего тут два или три пункта = Текст + Картинка + Остальное.
Текст = писатель. Картинка = художник. Остальное = издательство.
Если тут два пункта, то скорее всего это будет = писатель и издательство (в книге изданной через издательство).
Или эти два пункта = писатель и художник (в книге изданной самостоятельно, как в приведённом примере).
Если писателей несколько (соавторы), то они будут указаны в одном пункте через запятую одной строкой.
Тут же указываются и переводчики…
Народу тут может быть очень много: писатели, соавторы, переводчики, художники. К тому же всех может быть по нескольку человек. Плюс издательство. Но программа минимум — это один человек. Автор текста. Вы.
Отсутствие знака не означает, что произведение не защищено авторскими правами, так как авторское право возникает в момент создания произведения. Наличие или отсутствие знака охраны авторского права не влияет на лицензирование произведения. Знак тут нужен чтобы показать кому принадлежат права. На сами права он никак не влияет.
№9 ISBN ещё раз внизу (дубль два)
Может показаться странным, но все библиотечные данные (УДК / ББК / Авторский Знак / ISBN) в большинстве книг повторяются по два раза. Можете сами убедиться. На самом деле вот это вот положение (в левом нижнем углу оборота титульного листа) — это и есть его законное, прописанное в правилах место.
И если ISBN приводится в книге один раз — то именно здесь.
Если два раза, то здесь и в рамке №5.
Если три раза, то здесь, в рамке №5 и в конце книге.
Кроме того ISBN в любом случае будет указан на обложке книги, там где штрихкод.
№10 Возрастная маркировка
Здесь 10.000+ знаков и более 300 комментариев на эту тему:
Возрастной рейтинг одной картинкой = Рожать можно, а книжку читать ещё рано (18+)
Коротко:
до 6
К информационной продукции для детей, не достигших возраста шести лет, может быть отнесена информационная продукция, содержащая информацию, не причиняющую вреда здоровью и (или) развитию детей (в том числе информационная продукция, содержащая оправданные ее жанром и (или) сюжетом эпизодические ненатуралистические изображение или описание физического и (или) психического насилия (за исключением сексуального насилия) при условии торжества добра над злом и выражения сострадания к жертве насилия и (или) осуждения насилия).
6 — 12
1) кратковременные и ненатуралистические изображение или описание заболеваний человека (за исключением тяжелых заболеваний) и (или) их последствий в форме, не унижающей человеческого достоинства;
2) ненатуралистические изображение или описание несчастного случая, аварии, катастрофы либо ненасильственной смерти без демонстрации их последствий, которые могут вызывать у детей страх, ужас или панику;
3) не побуждающие к совершению антиобщественных действий и (или) преступлений эпизодические изображение или описание этих действий и (или) преступлений при условии, что не обосновывается и не оправдывается их допустимость и выражается отрицательное, осуждающее отношение к лицам, их совершающим.
12 — 16
1) эпизодические изображение или описание жестокости и (или) насилия (за исключением сексуального насилия) без натуралистического показа процесса лишения жизни или нанесения увечий при условии, что выражается сострадание к жертве и (или) отрицательное, осуждающее отношение к жестокости, насилию (за исключением насилия, применяемого в случаях защиты прав граждан и охраняемых законом интересов общества или государства);
2) изображение или описание, не побуждающие к совершению антиобщественных действий (в том числе к потреблению алкогольной и спиртосодержащей продукции, участию в азартных играх, занятию бродяжничеством или попрошайничеством), эпизодическое упоминание (без демонстрации) наркотических средств, психотропных и (или) одурманивающих веществ, табачных изделий при условии, что не обосновывается и не оправдывается допустимость антиобщественных действий, выражается отрицательное, осуждающее отношение к ним и содержится указание на опасность потребления указанных продукции, средств, веществ, изделий;
3) не эксплуатирующие интереса к сексу и не носящие возбуждающего или оскорбительного характера эпизодические ненатуралистические изображение или описание половых отношений между мужчиной и женщиной, за исключением изображения или описания действий сексуального характера.
16 — 18
1) изображение или описание несчастного случая, аварии, катастрофы, заболевания, смерти без натуралистического показа их последствий, которые могут вызывать у детей страх, ужас или панику;
2) изображение или описание жестокости и (или) насилия (за исключением сексуального насилия) без натуралистического показа процесса лишения жизни или нанесения увечий при условии, что выражается сострадание к жертве и (или) отрицательное, осуждающее отношение к жестокости, насилию (за исключением насилия, применяемого в случаях защиты прав граждан и охраняемых законом интересов общества или государства);
3) информация о наркотических средствах или о психотропных и (или) об одурманивающих веществах (без их демонстрации), об опасных последствиях их потребления с демонстрацией таких случаев при условии, что выражается отрицательное или осуждающее отношение к потреблению таких средств или веществ и содержится указание на опасность их потребления;
4) отдельные бранные слова и (или) выражения, не относящиеся к нецензурной брани;
5) не эксплуатирующие интереса к сексу и не носящие оскорбительного характера изображение или описание половых отношений между мужчиной и женщиной, за исключением изображения или описания действий сексуального характера.
18+
1) побуждающая детей к совершению действий, представляющих угрозу их жизни и (или) здоровью, в том числе к причинению вреда своему здоровью, самоубийству, либо жизни и (или) здоровью иных лиц, либо направленная на склонение или иное вовлечение детей в совершение таких действий;
2) способная вызвать у детей желание употребить наркотические средства, психотропные и (или) одурманивающие вещества, табачные изделия, алкогольную и спиртосодержащую продукцию, принять участие в азартных играх, заниматься проституцией, бродяжничеством или попрошайничеством;
3) обосновывающая или оправдывающая допустимость насилия и (или) жестокости либо побуждающая осуществлять насильственные действия по отношению к людям или животным, за исключением случаев, предусмотренных настоящим Федеральным законом;
3.1) содержащая изображение или описание сексуального насилия;
4) отрицающая семейные ценности, пропагандирующая нетрадиционные сексуальные отношения и формирующая неуважение к родителям и (или) другим членам семьи;
5) оправдывающая противоправное поведение;
6) содержащая нецензурную брань;
7) содержащая информацию порнографического характера;
8) о несовершеннолетнем, пострадавшем в результате противоправных действий (бездействия), включая фамилии, имена, отчества, фото- и видеоизображения такого несовершеннолетнего, его родителей и иных законных представителей, дату рождения такого несовершеннолетнего, аудиозапись его голоса, место его жительства или место временного пребывания, место его учебы или работы, иную информацию, позволяющую прямо или косвенно установить личность такого несовершеннолетнего.
9) представляемая в виде изображения или описания жестокости, физического и (или) психического насилия (за исключением сексуального насилия), преступления или иного антиобщественного действия;
10) вызывающая у детей страх, ужас или панику, в том числе представляемая в виде изображения или описания в унижающей человеческое достоинство форме ненасильственной смерти, заболевания, самоубийства, несчастного случая, аварии или катастрофы и (или) их последствий;
11) представляемая в виде изображения или описания половых отношений между мужчиной и женщиной;
12) содержащая бранные слова и выражения, не относящиеся к нецензурной брани.
Это к вопросу о том, должна ли быть маркировка и какая именно должна быть маркировка. Тут правила универсальные:
А) В издательстве же вам в любом случае посоветуют смягчить всё твёрдое, и скруглить всё острое, под какой бы возраст это ни попадало с точки зрения закона.
Б) Сомневаешься — округляй. Есть возникает вопрос, а не слишком ли много крови, не слишком ли натуралистично сунул, не слишком ли лакомо затянулся… То следует округлить в сторону следующей категории, дабы не травмировать.
Предполагается, что вы уже определились с маркировкой. Теперь нас интересует, где именно необходимо указывать возрастной рейтинг книги?
Маркировка 18+ и Содержит нецензурную брань обязательна должна стоять на лицевой стороне обложки и в выходных данных. Кроме того, при продаже печатных экземпляров такие книги должны быть упакованы в пленку.
В электронных книгах возрастная маркировка должна стоять на обложке, на первой странице книги либо в информационных данных (метаданных книги в карточке товара в интернет-магазине).
У печатных книг рейтинг 0+, 6+, 12+ и 16+ должны стоять в выходных данных и могут дублироваться на обложке по желанию автора/издательства. И — согласно духу закона — стоит это делать.
№11 Расположение: поля и выравнивание
Вы можете взять изданные книги в руки и убедиться, что раз на раз не приходиться. Кто-то выравнивает так, кто-то сяк, кто-то пишет УДК и ББК один раз, кто-то не делает выноску авторскому знаку и т.д. Но — возникает ощущение — что это не некая идея, сделать вот именно так. А просто сделали, как пришлось. В большинстве же нормальных издательств, будет как на картинке.
Поля, выравнивание, выноски — обозначены красными линиями.
Слева за поля выступают:
УДК + ББК + авторский знак (верх страницы), авторский знак (середина страницы), ISBN (низ страницы).
Так и должно быть. Логика такая: так удобнее библиотекарю, легче найти глазами нужную информацию. Тем более, что титульные листы выглядят по-разному. Аннотации могут быть разными. Свободный текст. Перечисление участников. Ну и всё это может быть усугублено ещё названиями на языке оригинала, если книга переводная. А так сразу понятно.
Справа к полям придвинуты:
Набор из УДК + ББК (середина страницы) и Копирайт (низ страницы).
Самые длинные строки абзацев упираются в правое поле. Обычно сами строки выравнены по левому краю.
№12 Оборот титульного листа с выходными данными:
Итого. У вас должно быть 9 информационных блоков.
Для того чтобы их правильно заполнить, вам понадобится:
Узнать УДК, ББК, Авторский знак.
Купить ISBN в книжной палате или издательстве.
Знать имя автора, название книги, город и год издания.
Написать аннотацию (герой, конфликт, цель) на 500 знаков.
Определиться с тем, кому принадлежат права на текст и всё остальное.
Выбрать вариант возрастной маркировки: 0+, 6+, 12+, 16+, 18+. Округляйте в большую сторону.
После вёрстки понять точное количество страниц. Не в произведении, а в данном конкретном издании.
И правильно расположить данные в этих девяти окошках:
Без дополнительных чёрточек это должно выглядеть примерно так:
Финал!
Алоха!
Эмма Ваградян
iOS разработчик IT-компании «Доктор на работе»
Одно из самых ярких впечатлений на меня произвела книга консультанта и автора в области разработки ПО Роберта Мартина «Чистый код. Создание, анализ и рефакторинг», написанная в 2012 году. Начиная работу, автор пишет:
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение».
В своей книге специалист подробно рассказывает о том, как избежать ошибок при написании кода и сделать его чистым.
Книга включает в себя три части. В первой автор описывает основные принципы и приемы создания чистого кода и приводит примеры такого «правильного» кода. Во второй части он демонстрирует сценарии, представляющие собой упражнения по чистке кода или по преобразованию плохого кода в код с меньшим числом ошибок. Последняя часть представляет собой главу, в которой автор описывает путь мышления человека в процессе чтения, написания и чистки кода.
На мой взгляд, книга написана простым языком, поэтому освоить ее сможет даже начинающий программист. Я бы порекомендовала ее людям, только начинающим осваивать профессию, поскольку важно усвоить принципы написания правильного кода в самом начале работы.
Общие правила написания чистого кода
В начале повествования автор сосредотачивает внимание на основных постулатах создания правильного кода. Прочитав эту часть, я поняла, что до того, как код отдан тестировщикам, важно продумать, какие могут возникнуть проблемы и ошибки. Необходимо понять, какой кейс не был учтен. Стоит полностью продумать свою задачу и только после этого приступать к ее выполнению. Ведь если человек начинает писать код, не продумав все заранее, он может столкнуться с ошибками, ему придется возвращаться назад, то есть выполнять двойную работу. Мне кажется, что это очень важный совет. Применяя его, сейчас я экономлю очень много времени и энергии.
Автор сравнивает написание кода с созданием книги. В обоих случаях сначала пишется черновик, в котором заранее продумываются все ходы, и только потом создается чистовик, содержащий лучший вариант. Если специалист хочет стать хорошим программистом, ему всегда нужно продумывать заранее ход работы.
Кроме того, не нужно бояться что-то менять в уже созданном коде. Часто программисты работают с чужим кодом и не меняют какие-то его элементы, поскольку бояться столкнуться с непредсказуемыми ошибками. По мнению автора, такая стратегия ошибочна, потому что она обязательно приведет к еще большему количеству ошибок. Также одним из основных постулатов создания чистого кода является принцип единой ответственности. Согласно ему, любая сущность должна выполнять только одно действие и нести только одну ответственность.
Автор говорит также о том, что код должен читаться сверху вниз. Функции лучше располагать так, чтобы при чтении одной, сразу было видно другую. Если же блоки кода находятся в разных местах, это очень затрудняет чтение.
Наконец, Р. Мартин отмечает важность удаления мертвого кода. Это код, который никогда не сработает или тот код, который уже не используется. По мнению автора, такие коды не приносят никакой пользы и удалять их нужно сразу же, чтобы все было структурировано. Далее я хотела бы рассказать о тезисах книги, которые кажутся мне наиболее важными.
Наименование
При написании кода очень важно задавать верное название, поскольку наименование обеспечивает читаемость кода. Необходимо использовать наиболее понятные и подходящие наименования. Прочитав название метода или сущности, специалист должен сразу понять, за что она ответственна. Стоит также помнить о принципе единой ответственности, и если программист ему следует, то функция вряд ли будет содержать вставки «And» или «With», поскольку функция выполняется лишь одно действие. При описании функции важно всегда использовать глаголы. Также желательно, чтобы в названии было ключевое слово, которое поможет понять, о чем эта функция.
Важно избегать одинаковых наименований. Если в вашем коде имеются функции с одинаковыми названиями, вероятно, они выполняют одно и тоже же действие. Если специалист назвал функции одинаково, а они выполняют разные действия, их нужно переименовать так, чтобы было понятно, что конкретно они делают. Если они выполняют одинаковые действия, но, например, с изменением одного параметра, то важно продумать, как сделать так, чтобы функция не дублировалась. Иными словами, если у двух функций одинаковое наименование, скорее всего, нужно что-то менять.
Наименования лучше не сокращать, а прописывать полностью. Например, если используется слово «product», название «pr» будет не очень понятным для читателя. Важно, чтобы название полностью отражало ответственность сущности.
Функции
По мнению Р. Мартина, функции должны быть максимально короткими. Их длина не должна быть больше двадцати строк, а сами строки не должны быть длиннее ста пятидесяти символов. В противном случае ее лучше делить на части. Кроме того, важно, чтобы функция выполняла только одну операцию. Что касается входных параметров, в идеале их не должно быть. Но если входные параметры требуются, то их должно быть не больше трех. Чем больше входных параметров, тем тяжелее читать функцию.
Комментарии
Слишком большое количество комментариев к коду означает, что написан он плохо. Комментировать код стоит только тогда, когда он может быть непонятен другому разработчику или самому создателю этого когда через какое-то время. Также не нужно комментировать плохой код, его необходимо просто переписать. Например, если специалист начинает работу над проектом другого программиста, и он видит ошибки, эти ошибки нужно сразу же исправлять.
Недописанный или некорректно работающий код всегда нужно комментировать, используя соответственно одно из двух ключевых слов «TODO» или «FIXME». В таком случае программист будет сразу понимать, что код не готов и его нужно дописывать. Также часто разработчики комментируют функции или части кода, чтобы когда-то к ним вернуться, и это переходит из ветки в ветку. Такие комментарии лучше не оставлять. Системы контроля версий хранят все состояния кода, поэтому необходимости переносить закомментированный код из ветки в ветку нет.
Форматирование кода, классы и обработка ошибок
При форматировании кода необходимо придерживаться общей стилистики проекта, его общепринятой архитектуры. Например, если в проекте используется архитектура V.I.P.E.R., то нужно использовать ее, иначе можно испортить код. Если же написание проекта начинается с нуля, то необходимо заранее продумать, какую архитектуру использовать и какой стилистики придерживаться.
Классы обязательно должны быть компактными. Название класса должно отображать его ответственность. И к ним также применяется принцип единой ответственности. Кроме того, Р. Мартин говорит о том, что по отношению к классам, как и по отношению к функциям, важно применять принцип компактности. Не стоит создавать большие классы, лучше разбивать их на подклассы. Важно создавать все новые подклассы до тех пор, пока не получится максимально раздробленная и понятная структура.
Наконец, при обработке ошибок всегда важно использовать exсeptions (исключения) вместо возвращения кода ошибок напрямую. Обработка ошибок всегда должна представлять собой только одну операцию. В функции, которая ответственна за обработку ошибки, ничего другого после произведения обработки выполняться не должно. Хотя на это вам намекнет и сам компилятор.
Книга Р. Мартина является сводом правил по написанию правильного кода, которым каждый программист должен следовать. На мой взгляд, умение писать чистый код – важный навык, помогающий специалисту не только самому понимать свой код лучше, но и работать в команде. Именно поэтому я уверена в том, что, если после этой статьи хоть один разработчик узнает о данной книге и прочтет ее, в мире станет на одного хорошего разработчика больше.